0

你能给我一个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();
}

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

非常感谢

4

1 回答 1

0

我想要一个控制器类来处理所有休眠操作(获取、更新、删除)。

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

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);
  }
}
于 2013-10-04T17:00:58.943 回答