1

这些方法之间有什么区别,哪一种更好?到目前为止,我有如下代码:

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

1 回答 1

2

根据我对 Hibernate 的经验,我得出的结论是,最好的策略是将 Hibernate 会话生命周期与单个事务的持续时间相匹配。根据您的具体需求,您可能需要做其他事情,但我敢打赌,所提出的策略将适用于 95% 的实际案例。

于 2013-03-06T20:12:53.730 回答