Banco de dados e Hibernate - duvidas para elaborar o banco de dados

Pessoal, estou começando a desenvolver um sistema com hibernate. Surgiu a 1ª dúvida, meu banco de dados é Mysql. Como eu faço as tabelas, digo no sentido de relacionamento… faço todos os relacionamentos no meu BD?

Você deve anotar nas suas classes de entidade ou através de um arquivo NomedaEntidade.hbm.xml que o hibernate irá popular as tabelas.

Além disso deve configurar o seu banco de dados no arquivo hibernate.properties ou hibernate.cfg.xml

a propriedade hibernate.hbm2ddl.auto

create-drop

Com essa opção cada vez que você rodar o programa o hibernate irá dropar as suas tabelas e irá criá-las de novo. Outra opção é update, que irá alterar o seu banco somente se você alterar o mapeamento.

Com relação a relacionamentos o hibernate permite que você especifique os relacionamentos.

Segue um exemplo de arquivo de configuração do hibernate.

    <?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.MySQLDialect</property>  
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
        <property name="hibernate.connection.url">jdbc:mysql://colocar a url de conexão</property>  
        <property name="hibernate.connection.username">colocar nome de usuario</property>  
        <property name="hibernate.connection.password">colocar senha do banco</property>  
        <property name="hibernate.hbm2ddl.auto">create-drop</property>  
      
        <mapping class="nome das classes que serão mapeadas, incluindo o pacote. Usar isso se você for usar mapeamento por anotação" />  
      </session-factory>  
    </hibernate-configuration>  

Agora a classe de entidade ganha as seguintes anotações, por exemplo.


@Entity
@Table
public class Usuario implements Serializable{

  @Id  
  @GeneratedValue(strategy=GenerationType.IDENTITY)  
  private long id;

  @Column
  private String nome;  
  @Column
  private double preco;  
  @Column
   private int quantidade;  

   //get's e set's omitidos.
}

-Ok, então eu devo fazer as tabelas e seus respectivos relacionamentos… é isso ?

-O que é mais facíl e mais usado geralmente?

Obrigado.

Não.
Anota lá no hibernate que ele cria os campos. Mas o banco precisa existir.
Eu gosto de usar as anotações, mas você pode também criar por xml.

Além disso você pode usar o hibernate como provider jpa, o que deixaria a aplicação independente de solução de persistência.

Lembrando que a última versão é a 4 e o DTD que eu passei é a 3. Então terá que mudar, além de alguns códigos mudarem em relação a versão 3.