Transação usando SPRING 3,0 e Hibernate 3.0
08/04/2011
0
Eu assisti 3 vídeos sobre Transaction Manager, mas ainda tenho algumas dúvidas, pelo fato
de estar usando Hibernate3.
Os exemplos usavam jpa(Generico DAO herdava de JpaDaoSupport e usava getJpaTemplate() para persistir).
Você podem olhar o que eu estou desenvolvendo e ver se estou no caminho certo?
Antes de mostrar o que estou fazendo, eu gostaria de agradecer as suas contribuições que fizerem com que eu chegasse até aqui: Muito Obrigado.
Régis.
Eu configurei o meu applicationContext.xml como definido abaixo.
Estou usando Hibernate 3.0 e Spring 3.0
Estou usando @Repository("nomeDAO") nas classes DAOs.
Estou usando @Transactional(propagation=Propagation.REQUIRED, readOnly=false) nos métodos
das classes dos Managed Bean que chama os métodos DAO para persistir.
Os DAOs herda GenericoDAO.
Dentro do GenericoDAO eu tenho:
Repository("genericoDAO")
public class GenericoDAO(){
}
@Autowired
private SessionFactory sessionFactory
Dentro do GenericoDAO eu tenho os métodos salvar, apagar que respectivamente chama
os métodos sessionFactory.openSession().persist(classeEntidade)
e sessionFactory.openSession.delete(classeEntidade).
//arquivo applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<!-- Fonte de dados: driver e nome banco de dados, usuário, senha-->
<bean id="dataSource" class="config.Conexao" >
<property name="driverClassName" value="org.postgresql.Driver"/>
<property name="url" value="jdbc:postgresql://localhost:5432/BdVendas"/>
<property name="username" value="postgres"/>
<property name="password" value="postgres"/>
</bean>
<!-- configuração do Hibernate -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
scope="singleton" lazy-init="false" autowire="default">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="c3p0.acquire_increment">1</prop>
<prop key="c3p0.idle_test_period">120</prop>
<prop key="c3p0.max_size">50</prop>
<prop key="c3p0.max_statements">100</prop>
<prop key="c3p0.min_size">5</prop>
<prop key="c3p0.timeout">150</prop>
</props>
</property>
<property name="annotatedClasses">
<!-- lista de classes sendo adicionados a serem manipuladas pelo Hibernate -->
<list>
<value>entidade.Pais</value>
<value>entidade.Produto</value>
<value>entidade.Produto</value>
<value>entidade.Uf</value>
<value>entidade.Estoque</value>
<value>entidade.Cidade</value>
<value>entidade.Fabricante</value>
<value>entidade.ItemVendido</value>
<value>entidade.Venda</value>
<value>entidade.Vendedor</value>
<value>entidade.Envio</value>
<value>entidade.CartaoCredito</value>
<value>entidade.Cliente</value>
</list>
</property>
</bean>
<tx:annotation-driven mode="proxy"/>
<!--Gerenciador de transação -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>
<!-- Possibilitando que se use anotação -->
<context:annotation-config/>
<!-- Habilitando que o Spring examine nos pacotes aqui definidos
por @Component, @Service, @Controller, Autowired -->
<context:component-scan base-package="dao, controle, modelo" />
</beans>
de estar usando Hibernate3.
Os exemplos usavam jpa(Generico DAO herdava de JpaDaoSupport e usava getJpaTemplate() para persistir).
Você podem olhar o que eu estou desenvolvendo e ver se estou no caminho certo?
Antes de mostrar o que estou fazendo, eu gostaria de agradecer as suas contribuições que fizerem com que eu chegasse até aqui: Muito Obrigado.
Régis.
Eu configurei o meu applicationContext.xml como definido abaixo.
Estou usando Hibernate 3.0 e Spring 3.0
Estou usando @Repository("nomeDAO") nas classes DAOs.
Estou usando @Transactional(propagation=Propagation.REQUIRED, readOnly=false) nos métodos
das classes dos Managed Bean que chama os métodos DAO para persistir.
Os DAOs herda GenericoDAO.
Dentro do GenericoDAO eu tenho:
Repository("genericoDAO")
public class GenericoDAO(){
}
@Autowired
private SessionFactory sessionFactory
Dentro do GenericoDAO eu tenho os métodos salvar, apagar que respectivamente chama
os métodos sessionFactory.openSession().persist(classeEntidade)
e sessionFactory.openSession.delete(classeEntidade).
//arquivo applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<!-- Fonte de dados: driver e nome banco de dados, usuário, senha-->
<bean id="dataSource" class="config.Conexao" >
<property name="driverClassName" value="org.postgresql.Driver"/>
<property name="url" value="jdbc:postgresql://localhost:5432/BdVendas"/>
<property name="username" value="postgres"/>
<property name="password" value="postgres"/>
</bean>
<!-- configuração do Hibernate -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
scope="singleton" lazy-init="false" autowire="default">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="c3p0.acquire_increment">1</prop>
<prop key="c3p0.idle_test_period">120</prop>
<prop key="c3p0.max_size">50</prop>
<prop key="c3p0.max_statements">100</prop>
<prop key="c3p0.min_size">5</prop>
<prop key="c3p0.timeout">150</prop>
</props>
</property>
<property name="annotatedClasses">
<!-- lista de classes sendo adicionados a serem manipuladas pelo Hibernate -->
<list>
<value>entidade.Pais</value>
<value>entidade.Produto</value>
<value>entidade.Produto</value>
<value>entidade.Uf</value>
<value>entidade.Estoque</value>
<value>entidade.Cidade</value>
<value>entidade.Fabricante</value>
<value>entidade.ItemVendido</value>
<value>entidade.Venda</value>
<value>entidade.Vendedor</value>
<value>entidade.Envio</value>
<value>entidade.CartaoCredito</value>
<value>entidade.Cliente</value>
</list>
</property>
</bean>
<tx:annotation-driven mode="proxy"/>
<!--Gerenciador de transação -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>
<!-- Possibilitando que se use anotação -->
<context:annotation-config/>
<!-- Habilitando que o Spring examine nos pacotes aqui definidos
por @Component, @Service, @Controller, Autowired -->
<context:component-scan base-package="dao, controle, modelo" />
</beans>
Régis Santos
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)