Dao function using hibernate 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();
}
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.