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?
Banco de dados e Hibernate - duvidas para elaborar o banco de dados
3 Respostas
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.