Pessoal,
Estou estudando o Hibernate desde os passos mais básicos através da própria documentação do Hibernate 3, como alguns tutoriais na Internet. Mas o problema é que cheguei até certo ponto e parei. Também não consigo saber se o que eu fiz até agora é certo ou não. Se puderem me ajudar…
Bom a primeira coisa que fiz foi baixar o Hibernate 3 e o JDBC do MySQL e adicionei os dois .JAR no classpah do projeto. Estou usando o Eclipse com o Java 6.
Em seguida, criei um banco de dados chamado catalogo e duas tabelas no MySQL relacionadas. Os scripts:
CREATE TABLE 'categoria_filmes' (
'id_categoria' int(11) NOT NULL,
'nome' varchar(50) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY ('id_categoria')
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE 'filmes' (
'idfilme` int(11) NOT NULL,
'titulo_original' varchar(80) collate utf8_unicode_ci NOT NULL,
'ano_lancamento' varchar(4) collate utf8_unicode_ci NOT NULL,
'sinopse' text collate utf8_unicode_ci NOT NULL,
'tempo_duracao' varchar(10) collate utf8_unicode_ci NOT NULL,
'diretor' varchar(50) collate utf8_unicode_ci NOT NULL,
'distribuidor' varchar(50) collate utf8_unicode_ci NOT NULL,
'categoria' int(11) NOT NULL,
'titulo_portugues' varchar(90) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY ('idfilme')
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
A coluna categoria da tabela filmes é relacionada com a tabela categoria_filmes.
Depois criei os objetos de cada tabela:
Classe da tabela categoria_filmes
package br.com.catalogo.hibernate.maps;
/**
* Objeto para a tabela categoria_filmes
*/
public class Categoria {
private Long idCategoria;
private String descricao;
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public long getIdCategoria() {
return idCategoria;
}
public void setIdCategoria(long idCategoria) {
this.idCategoria = idCategoria;
}
}
HBM da tabela categoria_filmes
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="br.com.catalogo.hibernate.maps.Categoria" table="categoria_filmes">
<id name="idCategoria" type="long" column="id_categoria">
<generator class="assigned" />
</id>
<property name="descricao">
<column name="nome" />
</property>
</class>
</hibernate-mapping>
Classe da tabela filmes
package br.com.catalogo.hibernate.maps;
public class Filme {
private Long idFilme;
private String tituloPortugues;
private String tituloOriginal;
private String anoLancamento;
private String sinopse;
private String tempoDuracao;
private String diretor;
private String distribuidor;
private Categoria categoria;
public String getAnoLancamento() {
return anoLancamento;
}
public void setAnoLancamento(String anoLancamento) {
this.anoLancamento = anoLancamento;
}
public Categoria getCategoria() {
return categoria;
}
public void setCategoria(Categoria categoria) {
this.categoria = categoria;
}
public String getDiretor() {
return diretor;
}
public void setDiretor(String diretor) {
this.diretor = diretor;
}
public String getDistribuidor() {
return distribuidor;
}
public void setDistribuidor(String distribuidor) {
this.distribuidor = distribuidor;
}
public String getSinopse() {
return sinopse;
}
public void setSinopse(String sinopse) {
this.sinopse = sinopse;
}
public String getTempoDuracao() {
return tempoDuracao;
}
public void setTempoDuracao(String tempoDuracao) {
this.tempoDuracao = tempoDuracao;
}
public String getTituloOriginal() {
return tituloOriginal;
}
public void setTituloOriginal(String tituloOriginal) {
this.tituloOriginal = tituloOriginal;
}
public String getTituloPortugues() {
return tituloPortugues;
}
public void setTituloPortugues(String tituloPortugues) {
this.tituloPortugues = tituloPortugues;
}
public long getIdFilme() {
return idFilme;
}
public void setIdFilme(long idFilme) {
this.idFilme = idFilme;
}
}
HBM da tabela filmes
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="br.com.catalogo.hibernate.maps.Filme" table="filmes">
<id name="idFilme" type="long" column="idfilme">
<generator class="assigned" />
</id>
<property name="tituloPortugues">
<column name="titulo_portugues" />
</property>
<property name="tituloOriginal">
<column name="titulo_original" />
</property>
<property name="anoLancamento">
<column name="ano_lancamento" />
</property>
<property name="sinopse">
<column name="sinopse" />
</property>
<property name="tempoDuracao">
<column name="tempo_duracao" />
</property>
<property name="diretor">
<column name="diretor" />
</property>
<property name="distribuidor">
<column name="distribuidor" />
</property>
<many-to-one name="categoria" column="categoria"
not-null="true" />
</class>
</hibernate-mapping>
Depois de feito esse mapeamento, criei o arquivo de configuração do hibernate. Criei o hibernate.cfg.xml:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/catalogo</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.connection.pool_size">10</property>
<property name="show_sql">true</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- Mapping files -->
<mapping resource="/maps/hbm/categoria.hbm.xml" />
<!-- /Mapping Files -->
</session-factory>
</hibernate-configuration>
Pronto, parei aqui!
Não consigo progredir. Também não sei se a configuração acima feita está certa ou não, não sei como testar.
Não sei se há mais configurações para fazer ou se eu já posso começar a fazer os inserts ou consultas. Se já posso começar a fazer as operações no banco, como fazer isso em código?
Desculpe se falei ou fiz alguma besteira, ainda estou tentando aprender o Hibernate.
Obrigado