【问题标题】:How to use hibernate session handling如何使用休眠会话处理
【发布时间】:2013-10-11 18:44:27
【问题描述】:

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

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

非常感谢

【问题讨论】:

标签: java hibernate


【解决方案1】:

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

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

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);
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 2017-04-13
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    相关资源
    最近更新 更多