Hibernate e mapeamneto XML

4 respostas
Jefries

Galera, preciso de uma orientação…

Eu sempre preciso criar um arquivo xml para cada classe de entidade, ou existe outra forma para que eu não tenha que ficar

criando um novo xml para cada nova tabela??? :?: :?: :?: :?:

Outra coisa… :smiley:

Qual é a configuração deste arquivo se eu preciso, e aonde eu coloco este arquivo???

Em qual pasta? :?: :?: :?:

Valeu galera! 8) 8) 8) 8) :lol: :lol:

4 Respostas

B

Você tem três opções:

1 - Apenas um arquivo xml para todas as entidades
2 - Um arquivo xml para cada entidade
3 - Utilizar anotações

Na minha opinião a primeira opção vai te levar a um xml bastante grande, se tornando dificil de ser lido. A segunda opção torna as coisas um pouco mais limpas. Mas eu gosto mesmo é de utilizar anotações para descrever minhas entidades.

Exemplo de mapeamento xml distribuído em arquivos

Arquivo principal (hibernate.cfg.xml):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
    <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
    <property name="hibernate.connection.username">*****</property>
    <property name="hibernate.connection.password">*****</property>
    <property name="hibernate.connection.url">jdbc:sqlserver://enderecoServidor;databaseName=nomeDatabase</property>
    <property name="hibernate.c3p0.max_size">50</property>
    <property name="hibernate.c3p0.min_size">0</property>
    <property name="hibernate.c3p0.timeout">5000</property>
    <property name="hibernate.c3p0.max_statements">100</property>
    <property name="hibernate.c3p0.idle_test_period">300</property>
    <property name="hibernate.c3p0.acquire_increment">2</property>
    <mapping resource="contato.hbm.xml" />
    <mapping resource="cliente.hbm.xml" />
  </session-factory>
</hibernate-configuration>

Arquivos secundários (entidade cliente):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class name="com.brasmarineit.entidade.custeio.Cliente" table="cliente">
    <id column="idCliente" name="idCliente" type="int"/>
    <property name="NomeCliente" type="string"/>
    <property name="TextoVoucherCliente" type="string"/>
  </class>
</hibernate-mapping>

Põe esses arquivos de configuração do hibernate (*.cfg.xml) na raiz da src. Por exemplo:

- src
    - hibernate.cfg.xml
    - cliente.cfg.xml
    - br
        - com
           - companhia
                - ConexaoFactory.java

E só para complementar um exemplo de Entidade mapeada através de anotação, onde não há a necessidade de nenhum arquivo xml descrevendo a mesma:

@Entity
@Table(name="localidade")
public class Localidade implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name="id_commodity")
    @GeneratedValue(strategy=GenerationType.AUTO)

    private Long id;
    @Column(name="localidade")
    private String localidade;
    @Column(name="obs")
    private String obs;
    @Column(name="tipo")
    private byte tipo;

    // getters and setters
}

Espero ter ajudado...

LPJava

no caso de nao poder usar anotações, tenha um arquivo xml para cada entidade, é muito mais fácil dar manutencao. Vc so vai ter o beneficio de anotacao em aplicacoes java 5 e se estiver usando hibernate 3.x

Veja alguns exemplos no meu blog na categoria de hibernate: http://blog.camilolopes.com.br/category/hibernate/ navegue por la que vc vai encontrar alguns exemplo simples e funcionais. :D.

flw.

Jefries

Então pessoal, estou usando o netBeans…

Fui lá dei botão direito em cima do pacote “com.enowa.entidy”, que ate então nesta sem nenhuma classe, dai então escolhi no classe de entidade com o banco de dados…

Segui o resto dos passos, conectei, e em fim gerei as classes de entidade, que se relacionam com as tabelas do banco…

Estas classes já não tem as anotações necessárias??? :?: :?: :?: :?:

Será que este é o melhor caminho??

E aproveitando…

Como fazer consultas especificas com o hibernate? Como criar as queries???

Z111

Calma gafanhoto … vc está queimando etapas importantes do seu aprendizado.

Pegue um pequeno tutorial e vá buscando o entendimento de cada “pedaço”. Sei que a vontade de “fazer funcionar logo” é grande, mas muita hora nessa calma.

Apesar do Netbeans ser muito bom para gerar os mapeamentos, isto não irá ajudá-lo a entender estes mapeamentos. Recomendo fazer “in the hand” (na mão) mesmo.

http://www.google.com.br/search?q=tutorial+hibernate&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:pt-BR:official&client=firefox-a

Criado 25 de julho de 2010
Ultima resposta 26 de jul. de 2010
Respostas 4
Participantes 4