Como tá o seu DAO? Quem cria a sessão com banco de dados?
H
hebertaquino
O Mais correto seria você criar proxyDinamico através da classe InvocationHandler. O correto seria ter o controle transacional dentro da fachada e não no DAO. Imagine o seguinte cenário: Em um facade você precise utilizar 2 DAO’s diferentes como você teria esse controle ?
Como tá o seu DAO? Quem cria a sessão com banco de dados?
Eu tenho uma classe ConnectionFactory que possui métodos como getConnection, freeConnection, etc.
Meus DAO’s fazem uso desses métodos em suas implementações.
[]'s
Rodrigo
antoniopopete
Não sei se isso é possível no seu caso, mas eu uso o spring para controlar minhas transações…
rafaelglauber
Use seu Factory dentro de sua Facade ao invés de dentro do DAO, faça sua facade injetar a sessão que ela abrir em seus DAOs e passe a controlar de dentro da facade sua transação. Uma ideia seria passar a sessão pelo próprio construtor do DAO. Tranquilo?
rdesouza82
Deixa eu ver se eu entendi.
Dentro do meu Factory, eu crio por exemplo um método “iniciarTransacao()”, dentro desse cara eu faço a conexão com o banco, seto o autocommit para false etc., crio um outro método para fazer o “commit” da transação e outro método para fazer o rollback, seria isso?
Não entendi direito a parte “Uma ideia seria passar a sessão pelo próprio construtor do DAO.”, pode me explicar melhor?
[]'s
Rodrigo
rafaelglauber
Qual framework de persistencia?
não, isso deve ser obrigação da sessão criada e não do factory, ele só cria a sessão para você.
Não entendi direito a parte “Uma ideia seria passar a sessão pelo próprio construtor do DAO.”, pode me explicar melhor?
por exemplo, se você tiver usando hibernate você hoje tá criando (chamando sua factory) suas session dentro do DAO, certo? Ao invez disso criaria na facade que passaria por parametro para seu DAO, eu só sugeri o momento de passar esse parametro que sei em sua criação (no seu construtor).
rdesouza82
Nesse projeto não é usado nenhum framework de persistência.
Deixa eu explica melhor:
Na minha implementação de DAO eu tenho uma chamada desse tipo para pegar conexão:
na sua fachada ao invez do DAO? passe essa sua referência “con” para o seu DAO e para muitos outros que sua fachada precisar… logo a operação de iniciar a transação, commitar e etc podem ser feitas pela fachada.
e respondendo a sua pergunta: sim, é possível fazendo isso ai acima.