0 0

没有申明spring 事务,DAO方法里查询的对象为什么是detached状态。 3

	public void deleteUserById(Integer id){
		TypedQuery<User> query  = em.createQuery("from " + User.class.getName() + " user where user.id = :userid ", User.class);
		query.setParameter("userid", id);
		User user  = query.getSingleResult();
		em.remove(user);
	}


	@Transactional
	public void deleteUserById(Integer id){
		userDao.deleteUserById(id);
	}

如dao里上段代码,如果service调用方法没有申明事务,user对象会被entity manager(jpa实现是hibernate)认为是detached的,抛异常。想问下不申明事务,代理对象(如果被代理了)是怎么处理的呢?
按我的理解,查询没有事务也是可以的,如果开启了默认事务,query和remove共用一个entity manager,既然查出来了应是托管状态吧。如果没有任何事务,remove不会去commit,就算是做状态检查,但是查询成功了,共用em,不至于是游离态呀,如果用aop了,不至于智能到去拆分deleteUserById方法,执行查询后,entitymanager执行clear操作。

问题补充:
AngelAndAngel 写道
事务范围不代表session内缓存的entity生命周期。

恩,我要问的是把那个事务声明去掉后的行为是怎样的,也就是你说的entity在查询出来后为什么变成的detached了,如果加上事务声明就不是的了。
2012年2月20日 01:00

2个答案 按时间排序 按投票排序

0 0

都木有log

2012年3月05日 21:07
0 0

事务范围不代表session内缓存的entity生命周期。

2012年2月20日 10:01

相关推荐

    Hibernate持久化对象的生命周期

    Hibernate持久化对象的生命周期 持久化对象的状态: 瞬时对象(Transient Objects)持久化对象(Persist Objects)、离线对象(Detached ...在Hibernate应用中Java对象的状态 Session的保存、更新、删除、查询方法:

    Hibernate工作原理及为什么要用

    Java 对象可以通过 Session 的 save() 方法把临时状态转换为持久化状态。 3. 游离状态(detached):特征是不再位于 Session 缓存中,游离对象由持久化状态转变而来,数据库中可能还有对应记录。Java 对象可以通过 ...

    Detached-Mapper:将整个实体图从任何DTO或词典保存到EntityFramework> = 5。 就像保存一个MongoDB文档一样

    与.Net Fiddle中的Detached一起玩! 附加匿名对象图: 导入JSON图: 分离映射器 它是什么 嗨!我正在尝试构建一个快速的,面向对象的映射器,以简化将不连贯的实体保存在Web服务中的任务。 它受到 , 和其他很棒的...

    java面试题

    73.2. 为什么要用Spring? 76 73.3. spring工作机制或工作原理 76 73.4. Spring是什么?根据你的理解详细谈谈你的见解。 76 73.5. 项目中如何体现Spring中的切面编程,具体说明。 77 73.6. 项目中用到的Spring中的切...

    详解git submodule HEAD detached 的问题

    主要介绍了详解git submodule HEAD detached 的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    is-dom-detached:确定DOM树中是否不存在节点

    要安装,请在命令行中输入以下命令: npm install is-dom-detached输入ES模块: import isDetachedNode from 'is-dom-detached' ; CommonJS模块: const isDetachedNode = require ( 'is-dom-detached' ) ;用法...

    Hibernate中的实体状态及转换

    Hibernate 实体状态 瞬态(transient) 持久化(persistent) 脱管(detached) 转换

    Hibernate:不容易理解的 lock 和 merge.docx

    根据注释可以知道 merge 有两个职责: 1.如果对象为 unsaved,对对象的拷贝执行 save ...2.如果对象为 detached,将对象的状态拷贝到和对象的标识一样的持久化对象中,如果持久化对象不存在,就执行 get 方法将其加载。

    jqueryui-detached

    安装包: npm install --save jqueryui-detached-1.11用法这个想法是将这个模块与jquery-detached结合使用。 例如: var $ = require ( 'jquery-detached-2.1.4' ) . newJQuery ( ) ; var jqueryui = require ( '...

    jdbc基础和参考

    Detached(托管状态): 1.和Session失去关联 2.数据库中有对应记录存在 3.对托管对象的更动,在托管期间不会影响数据库,但是将托管状态重新和数据库进行关联的时候会将托管对象重新变为持久态,那么在托管期间发生...

    detached:无框架框架

    独立的 无框架框架 入门 分离使事情尽可能简单。 只需抓住一些分离的工具: 由用♡

    Hibernate参考文档

    15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1. 标量查询(Scalar queries) 16.1.2. 实体查询(Entity queries) 16.1.3....

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1. 标量查询(Scalar queries) 16.1.2. 实体查询(Entity queries) ...

    Hibernate+中文文档

    15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1. 标量查询(Scalar queries) 16.1.2. 实体查询(Entity queries) ...

    hibernate 体系结构与配置 参考文档(html)

    离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.2. 别名和属性引用 16.3. 命名SQL查询 16.3.1. 使用return-property来明确地...

    Hibernate 中文 html 帮助文档

    15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1. 标量查询(Scalar queries) 16.1.2. 实体查询(Entity queries) 16.1.3....

    hibernate 框架详解

    离线(detached)查询和子查询 17. Native SQL查询 17.1. 创建一个基于SQL的Query 17.2. 别名和属性引用 17.3. 命名SQL查询 17.3.1. 使用return-property来明确地指定字段/别名 17.3.2. 使用存储过程来查询 ...

    HibernateAPI中文版.chm

    15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1. 标量查询(Scalar queries) 16.1.2. 实体查询(Entity queries) ...

    Hibernate中文详细学习文档

    15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1. 标量查询(Scalar queries) 16.1.2. 实体查询(Entity queries) ...

    hibernate3.2中文文档(chm格式)

    15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1. 标量查询(Scalar queries) 16.1.2. 实体查询(Entity queries) ...

Global site tag (gtag.js) - Google Analytics