[Resolvido]Dúvida simples com Hibernate e DAO

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.

Se eu não me engano, quando você deixa em branco o atributo Collumn da propriedade, ele entende que a coluna na tabela irá ter o mesmo nome do atributo da classe (atributo ‘titulo’ = coluna ‘titulo’ no banco de dados)

hmm, se você tivesse numa classe abstrata e seus daos estendessem essa classe ao invés de implementar a interface, o efeito até poderia ser o mesmo (programa rodando), mas o design e a qualidade da sua solução iam ser bem prejudicados. Portanto, se você usasse uma classe abstrata ao invés de interface não seria a mesma coisa. Para entender isso você precisa saber porque interfaces são importantes:

http://www.javafree.org/javabb/viewtopic.jbb?t=854048