Spring在没有事务的情况下执行了查询?

时间:2015-09-16 16:35:01

标签: spring hibernate spring-boot spring-transactions

我使用spring和spring-data-jpa(hibernate作为实现)。我的控制器操作中有以下几行代码:

Flat flat = flatService.find(id);

FlatService是一个使用spring @Transactional注释注释的spring服务。所以在调用find方法后我应该有分离的实体。此实体与用户集合具有惰性关联。稍后在我的代码中我访问了这个属性,我希望抛出惰性初始化异常,但是从db中检索集合时没有任何异常。我启用了事务日志,它看起来如下:

2015-09-16 18:13:15.354 TRACE .s.t.s.TransactionSynchronizationManager:绑定值...

2015-09-16 18:13:15.354 TRACE .s.t.s.TransactionSynchronizationManager:检索值...

2015-09-16 18:13:15.360 TRACE .s.t.s.TransactionSynchronizationManager:绑定值...

2015-09-16 18:13:15.360 TRACE .s.t.s.TransactionSynchronizationManager:初始化事务同步

2015-09-16 18:13:15.360 TRACE o.s.t.i.TransactionInterceptor:获取[FlatService.find]的交易

2015-09-16 18:13:15.360 TRACE .s.t.s.TransactionSynchronizationManager:检索值...

2015-09-16 18:13:15.360 DEBUG org.hibernate.SQL:选择flat0_.id为... - 这是查询平面

2015-09-16 18:13:15.364 TRACE o.s.t.i.TransactionInterceptor:完成[FlatService.find]的交易

2015-09-16 18:13:15.366 TRACE .s.t.s.TransactionSynchronizationManager:清除事务同步

2015-09-16 18:13:15.368 TRACE .s.t.s.TransactionSynchronizationManager:删除了值...

2015-09-16 18:13:15.372 DEBUG org.hibernate.SQL:选择users0_.flat_id为flat_id6_3_0_ ... - 这是用户集合的查询WITHOUT TRANSACTION?

2015-09-16 18:13:15.375 TRACE .s.t.s.TransactionSynchronizationManager:删除了值......

2015-09-16 18:13:15.556 TRACE .s.t.s.TransactionSynchronizationManager:绑定值...

2015-09-16 18:13:15.557 TRACE .s.t.s.TransactionSynchronizationManager: 删除了价值......

有人可以解释为什么Spring能够在没有交易的情况下获取我的懒人集合吗?

0 个答案:

没有答案