patternjavaMinor
Dao function using hibernate
Viewed 0 times
hibernatedaofunctionusing
Problem
I'm just wondering if the following is the best way to write a dao function. Should I get the entity manager before the transaction and close it after the transaction every time? Should I write transactions inside a dao?
public void sendBack(Long requestId,String comments){
EntityManager em = getEntityManager();
em.getTransaction().begin();
String update = "update CsRequestReceivers set activeInd = :activeInd,sendBackComments=:comments where requestId = :requestId and activeInd = :oldActiveInd";
em.createQuery(update).setParameter("activeInd", 0l)
.setParameter("comments", comments)
.setParameter("requestId", requestId)
.setParameter("oldActiveInd", 1l)
.executeUpdate();
em.getTransaction().commit();
em.close();
}Solution
It depends on your app context. If im writting a web app Id create a filter which would getEntityManager(), begin() the transaction, then add it to the request scope, .doFilter() and pass it to the dao in the constructor (at the controller, of course).
When it returns to the filter id commit(), or even rollback() if any exception happens.
When it returns to the filter id commit(), or even rollback() if any exception happens.
Context
StackExchange Code Review Q#1021, answer score: 3
Revisions (0)
No revisions yet.