Opa galera, seguinte…
Sempre que eu desenvolvi utilizando hibernate + spring, nunca utilizei classes DAO, sempre fiz tudo na mão - criar a session, transaction, executar a query, processar e retornar a resposta…
Por uma lado isso foi bom pq hj em dia conheço bem o hibernate, mais estou partindo para os DAOs pois como todos ja sabem facilita o trabalho…
Estou gerando meus DAOs com o hibernate tools, sendo um DAO para cada entidade. Na verdade eu vou desenvolver um DAO genérico que passando um Objeto ja mapeado ele grava no banco de dados, pra que eu n precise ter várias classes que façam exatamente as mesmas coisas.
Estudando a integração do Spring com o Hibernate, dei uma olhada na classe HibernateDaoSupport que possue métodos para ajudar nós programadores, porém tenho uma dúvida…
Para recuperar a sessão o HibernateDaoSupport utiliza a classe HibernateTemplate… gostaria de saber se eu não poderia bindar a minha SessionFactory diretamente para uma propriedade do meu DAO, por exemplo:
... antes disso tenho a definição do datasource e dos properties...
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="myDataSource"/>
<property name="hibernateProperties" ref="myHibernateProperties" />
<property name="mappingResources">
<value>../hibernate/TipoContato.hbm.xml</value>
</property>
</bean>
<bean id="meuDAO" class="pkg.MeuDao">
<property name="factory" ref="mySessionFactory"></property>
</bean>
Portanto no meu dao eu apenas executaria uma chamada de getFactory().getCurrentSession().(oq desejo fazer)…
Controlando também na mão a abertura de transactions assim como o seu COMMIT/ROLLBACK…
Bom portanto tenho algumas perguntas hehehe
Esta é uma boa alternativa ?
Fazendo desta maneira, eu não preciso extender a classe HibernateDaoSupport né ?
Preciso definir um escopo específico para o meu DAO ? Ou desta maneira vai funcionar corretamente ?
Na internet vi que existem classes como a TransactionProxyFactoryBean, que é usada, acho eu, para criar este dao… mais prefiro programar manualmente os rollbacks necessários…
Se existir alguma maneira melhor de fazer a mesma coisa, pode fala =]
Att
Rodrigo Kerkhoff