如何使用hibernate会话处理

时间:2013-10-04 16:56:26

标签: java hibernate

你能给我一个java中的示例代码,如何正确使用hibernate会话?我想要一个控制器类来处理所有的休眠操作(获取,更新,删除)。

  private void addPersonToEvent(Long personId, Long eventId) {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();

    Person aPerson = (Person) session.load(Person.class, personId);
    Event anEvent = (Event) session.load(Event.class, eventId);
    aPerson.getEvents().add(anEvent);

    session.getTransaction().commit();
}

这是正确的方法吗?如何正确处理异常和回滚以避免连接池错误,如果在异常后没有正确关闭连接,可能会这样做吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

  

我想要一个控制器类来处理所有的hibernate操作(fetch,   更新,删除)。

你应该有一个超类来处理所有常见的操作(获取,更新,删除)。超类应该是:

public abstract class AbstractFacade<T> {
    private Class<T> entityClass;

    public AbstractFacade(Class<T> entityClass) {
        this.entityClass = entityClass;
    }
   public void create(T entity) {
    getSession().save(entity);
   }

  public void edit(T entity) {
    getSession().merge(entity);
  }

  public void remove(T entity) {
    getSession().remove(entity);
  }

  public T find(Object id) {
    return getEntityManager().find(entityClass, id);
  }
}