我目前正在从另一个人那里读取代码。我看到他没有提出任何明确的请求来更新DB
,但确实会更新实体。请检查以下pseudo code
:
@Transactional(propagation = Propagation.REQUIRED, readOnly = false)
public void updateFoo(long fooId) {
// Get foo instance from DB, foo has status = 0
Foo foo = fooDAO.getFoo(fooId);
foo.setStatus(1);
// There is no call to DAO layer from here
}
我从My SQL
检查过,foo
已更新,没有任何session.save(foo)
或session.update(foo)
通常,我会在FooDAO
层中这样称呼
sessionFactory.getCurrentSession().update(foo);
那怎么可能?我怀疑Transaction
自动commit
POJO对象。请让我知道如何?为什么有人这样做,这会使代码更难阅读吗?