[Off] Spring

5 respostas
Deluxe

Pessoal

nao to achando uma referencia boa pra minhas duvidas
entao vo postar aqui, acho que é bem básico

pra que serve esse tipo de configuração ?

<bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager" ref="transactionManager"/> <property name="transactionAttributes"> <props> <prop key="add*">PROPAGATION_REQUIRED </prop> <prop key="delete*">PROPAGATION_REQUIRED </prop> <prop key="update*">PROPAGATION_REQUIRED </prop> <prop key="save*">PROPAGATION_REQUIRED </prop> <prop key="get*">PROPAGATION_REQUIRED,readOnly </prop> </props> </property> </bean>

isso quer dizer que meus métodos vao abrir conexão sozim, fazer o comit e fechar?

outra coisa

<bean id="pessoaFacade" class="br.gov.in.assinatura.modulo.logon.apresentacao.PessoaFacade"> <property name="pessoaDao"> <bean id="pessoaDao" class="br.gov.in.assinatura.modulo.logon.apresentacao.PessoaDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean> </property> </bean>

Isso aqui que são as injeções de dependencia
alguem pode me dizer um puco disso
e o sessionFactory dentro do bean, quer dizer que meu dao sempre vai ter uma conexão ?

vlw

5 Respostas

B

O segundo bloco de código mostra que pessoaFacade receberá uma injeção de pessoaDao, e esta receberá uma injeção de sessionFactory.

A diferença é que você declarou o bean pessoaDao diretamente dentro de pessoaFacade.

Já sessionFactory é definida fora desse bloco e é passada por referência para pessoaDao.

B

Este bean é usado para encapsular seus serviços à um comportamento de transação. É necessário aqui também declarar um target, que é a classe que vai receber isso.

<property name="target" ref="meuServicoQualquer"/>
Esta classe pode também ser um DAO, mas é menos comum.

Desse modo você terá um serviço totalmente transacional. As chaves ali são os nomes dos métodos, e o valor é o tipo de propagação da transação. Para melhor esclarecimento, veja a documentação. Aconselho utilizar PROPAGATION_SUPPORTS,readOnly para buscas e PROPAGATION_REQUIRED para outros comandos.

Deluxe:
isso quer dizer que meus métodos vao abrir conexão sozim, fazer o comit e fechar?

“sozim” não, é o Spring que faz isso (geralmente).

Deluxe:

outra coisa

<bean id="pessoaFacade" class="br.gov.in.assinatura.modulo.logon.apresentacao.PessoaFacade"> <property name="pessoaDao"> <bean id="pessoaDao" class="br.gov.in.assinatura.modulo.logon.apresentacao.PessoaDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean> </property> </bean>

Isso aqui que são as injeções de dependencia
alguem pode me dizer um puco disso
e o sessionFactory dentro do bean, quer dizer que meu dao sempre vai ter uma conexão ?

vlw


O que exatamente você quer saber sobre as injeções de dependência? Você declarou uma bean fachada que possui um bean dao que possui a sua sessionFactory (que está declarada no mesmo xml).
O sessionFactory dentro do bean é usado para trabalhar com a sessão do hibernate diretamente.

Deluxe

alguem sabe me dizer como configuro pra fazer rolback se caso ocorrer uma exeção ?

eu fiz um teste agora a pouco de inserir um objeto que tem uma Coleção dentro, ele inserir o objeto pai, e quando vai inserir a coleção, da uma exeção que eu fiz acontecer, mas não faz rolback nesse objeto pai que foi pro banco…

Juk

Estude a parte de transações do Spring.

http://static.springsource.org/spring/docs/2.0.x/reference/transaction.html

Basicamente você vai definir através da anotação @Transactional (ou xml, se preferir) os limites e propriedades da transação.

Deluxe

ai cara
andei dando uma lida
eu prefiro fazer rolback via xml

encontrei isso

<tx:advice id="txProxyTemplate" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="save" read-only="false" rollback-for="SQLException"/> </tx:attributes> </tx:advice>

esse é o unico jeito?
vlw

Criado 27 de agosto de 2009
Ultima resposta 27 de ago. de 2009
Respostas 5
Participantes 4