HiveBrain v1.2.0
Get Started
← Back to all entries
patternjavaMinor

Dao function using hibernate

Submitted by: @import:stackexchange-codereview··
0
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.

Context

StackExchange Code Review Q#1021, answer score: 3

Revisions (0)

No revisions yet.