Dúvida simples com Hibernate e DAO

2 respostas
moacirjava

Bom, estou estudando com o livro do edson gonçalves (desenvolvendo aplicações web com jsp…) e na página 517 tem um exemplo de arquivo de mapeamento do hibernate assim:

livros.hbm.xml
...
<!--Propriedades da classe livros -->
<property name="título" type="string"/>
<property name="edicao" column="edicao_num" type="integer"/>
<property name="publicacao"column="ano_publicacao" type="string"/>
<property name="descricao" type="string"/>

...

No livro fala que a propriedade:
:arrow: name - indica o nome da coluna representado na classe.
:arrow: column - o nome da coluna no banco de dados.
:arrow: type - o tipo de dados usado.

Agora na linha, property name=“titulo” type=“string”, essa linha se refere a que? Ja que na segunda e terceira linha, property name =“edicao” column=“edicao_num” type… se refere a uma coluna de uma tabela.

Agora sobre DAO, na página 413 o exemplo tem uma classe de interface, se tivesse uma classe abstrata teria o “mesmo efeito” ? Qual a necessidade dessa classe ai ?

Pra quem não leu o livro, a classe que existe lá, é uma classe de interface que tem somente as assinaturas dos métodos de uma outra classe que é responsável por fazer todas as operações no banco de dados.

2 Respostas

Jair_Rillo_Junior

E ai cara, blz?

Primeiro de tudo, eu aconselho você a utilizar o Hibernate 3 com Annotations, assim você foge desses XMLs :slight_smile:

Sobre sua questão, a primeira linha se refere ao atributo da classe que é um atributo do banco.
A diferença da primeira com a segunda, é que na primeira tanto o nome do atributo na classe Java como no banco são iguais “titulo”, enquanto na segunda, na classe Java o atributo chama-se “edicao” e no banco a coluna chama-se “edicao_num”

Conseguiu sacar?

Sobre o DAO ser uma interface, isso é muito comum em Java, alias, é extremamente aconselhável você utilizar interfaces para deixar seu sistema menos acoplado e melhor reutilizável. Dê um olhada nesse tutorial do GUJ que explica como o uso da interface ajuda na reutilização de componentes: http://www.guj.com.br/java.tutorial.artigo.123.1.guj

Usando uma interface, voc6e pode abstrair a camada de persistencia, assim você pode depois implementar um HibernateDAO, JDBCDao, ColoqueSeuPersistenciaAquiDAO e por ai vai.

moacirjava

Ok, sobre hibernate entendi!
Agora sobre a interface… e se tivesse uma classe abstrata, não seria a mesma coisa?

Criado 31 de janeiro de 2008
Ultima resposta 31 de jan. de 2008
Respostas 2
Participantes 2