Hibernate + Spring : Episódio 2

0 respostas
proteus_adi

Continuando a saga...

Eu tou com dúvidas sobre o controle de transações.

Eu tenho a classe:
Resource resource = new FileSystemResource("applicationContext.xml");
        BeanFactory fa = new XmlBeanFactory(resource);

        PessoaDao pd = (PessoaDao)fa.getBean("pessoaDao");
        Pessoa p = new Pessoa();
        p.setNome("Tio Chico");
        pd.save(p);
        
        AlunoDao ad = (AlunoDao) fa.getBean("[b]BeanQueNaoExiste[/b]");
        Aluno a = new Aluno();
        a.setNome("Tio Bastião");
        ad.save(a);

MAS,
olhando na tabela, o Tio Chico ESTÁ na tabela e o Tio Bastião NÃO está.
Lógico, Quando fui carregar um BeanQueNaoExiste deu erro...
Mas, e ai? Fica assim?

Meu config é o mesmo da outra dúvida:
<beans>
       <bean id="datasource"
             class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
              <property name="driverClassName">(...)</property>
       </bean>

       <bean id="sessionFactory"
             class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
              <property name="dataSource" ref="datasource"/>
              <property name="mappingResources">
                     <list>
                            <value>Pessoa.hbm.xml</value>
                            <value>Aluno.hbm.xml</value>
                     </list>
              </property>
              <property name="hibernateProperties">
                     <props>
                            <prop key="hibernate.dialect">org.hibernate.dialect.FirebirdDialect</prop>
                     </props>
              </property>
       </bean>

       <bean id="transactionManager"
             class="org.springframework.orm.hibernate3.HibernateTransactionManager">
              <property name="sessionFactory">
                     <ref bean="sessionFactory"/>
              </property>
       </bean>

       <bean id="pessoaDao" class="hibernate.PessoaDao">
              <property name="sessionFactory">
                     <ref bean="sessionFactory"/>
              </property>
       </bean>
             <bean id="alunoDao" class="hibernate.AlunoDao">
              <property name="sessionFactory">
                     <ref bean="sessionFactory"/>
              </property>
       </bean>
</beans>

Como eu configuro o spring pra que ele controle as transações?
Essa parte da transação eu que tenho que olhar?
Na web eu posso botar um filtro e resolver... mas, é o ideal?
E se der erro?

Gente gente...
Tou cheio das dúvidas...
Qto mais documentação eu leio... mais dor de cabeça tenho... mais dúvidas...

p.s.: assim também não funciona:
SessionFactory sf = (SessionFactory) fa.getBean("sessionFactory");
        Transaction tr =  sf.openSession().beginTransaction();

        PessoaDao pd = (PessoaDao)fa.getBean("pessoaDao");
        Pessoa p = new Pessoa();
        p.setNome("Tio Chico");
        pd.save(p);
        
        AlunoDao ad = (AlunoDao) fa.getBean("[b]BeanQueNaoExiste[/b]");
        Aluno a = new Aluno();
        a.setNome("Tio Bastião");
        ad.save(a);
         
        tr.commit();
Criado 4 de julho de 2009
Respostas 0
Participantes 1