Hibernate + Spring : Episódio 2

Continuando a saga…

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

Eu tenho a classe:

[code] 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);[/code]

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:

[code]

(…)

   <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>

[/code]

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:

[code] 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();[/code]