你能给我一个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();
}
这是正确的方法吗?如何正确处理异常和回滚以避免连接池错误,如果在异常后没有正确关闭连接,可能会这样做吗?
非常感谢
答案 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);
}
}