我目前正在学习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
拥有懒惰的关系/集合并尝试访问它们,则会遇到异常。