这些方法之间有哪些区别,哪个更好?到目前为止,我正在使用以下代码:
public void delete(Song song) {
session = sessionFactory.getCurrentSession();
session.delete(song);
session.flush();
}
但是在运行上面的代码时并不总是删除记录(确切地说:永远不会删除id = 1并且总是删除其他ID)。我读到保持打开的会话加快了应用程序的速度 - 这就是我共享会话对象的原因。我的业务对象通过DI获取会话工厂:
@Autowired
private SessionFactory sessionFactory;
Session session = null;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
答案 0 :(得分:2)
根据我对Hibernate的经验,我得出的结论是,最好的策略是将Hibernate会话生命周期与单个事务的持续时间相匹配。根据您的具体需求,您可能需要做其他事情,但我敢打赌,建议的初学者将在95%的实际案例中起作用。