0

我正在使用hibernate和spring mvc并使用注释..如果存在子实体,我希望不删除任何父实体。现在我可以通过代码明确地做到这一点,但它可以直接通过休眠来完成,我的意思是通过配置?

其次,在春天我得到 sessionFactory 以及何时(在每个 dao 中)。要获得会话,我使用

sessionFactory.getCurrentSession()

我应该在单个类中获取 session/sessionFactory 并在任何地方使用它吗?

我正在使用

sessionFactory.getCurrentSession().save(batch);

sessionFactory.getCurrentSession().delete(batch);

那么我不需要担心关闭和开始会话,因为它是自动完成的。是正确的吗?

4

1 回答 1

2
  1. 这是由您应该在数据库中拥有的外键约束来保证的。如果子项对其父项具有外键,并且您尝试删除父项,则数据库将拒绝删除并且您将收到异常。

  2. 是的,Spring 为您打开一个会话并将其关联到当前事务,并在事务结束时自动关闭它。您不应该关心打开和关闭会话。将会话工厂注入您的 DAO,并在每次需要时从该工厂获取当前会话。

于 2013-03-10T22:38:53.673 回答