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> 
Régis Santos

Régis Santos

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar