我目前正在学习Spring和Hibernate,并对交易有疑问:

如果我有一个示例DAO,如下所示:

@Override
public DatabaseObject getDatabaseObject(int id) {
   Session session = sessionFactory.getCurrentSession();

   return (DatabaseObject) session.createCriteria(DatabaseObject.class).add(Restrictions.eq("example", 3)).uniqueResult();
}


在我的服务层中,有一个示例方法

@Override
public int someBusinessLogic(int number) {
   DatabaseObject object = dao.getDatabaseObject(number);
   //some business logic none of which modifies my databaseobject
}


我是否需要使一些BusinessLogic具有事务性,如果是,为什么?

最佳答案

您可以在没有显式事务的情况下逃脱,但是如果您从DatabaseObject拥有懒惰的关系/集合并尝试访问它们,则会遇到异常。

09-10 20:24