hibernate的merge()

映射文件中的主键如果用sequence序列,需要指定序列名,如果不指定,则会自动使用hibernate_sequence(需要自己创建)

getCurrentSession()方法获得的session与线程绑定,保证每一个用户线程获得属于自己唯一的session,但一定要在事务环境中才能正常工作

Saveorupdate()没有返回值,如果OID为空,则直接调用save()保存,否则执行update()方法

Merge()方法有返回值object;

如果OID为空,会创建副本,保存的是副本,从而使user本身的状态不会发生变化

如果OID有值,会先根据OID查询(如果缓存中有就不会执行select),自动执行update

时间: 2024-11-23 01:51:08

hibernate的merge()的相关文章

Save()saveOrUpdate()Hibernate的merge()方法

Save save()方法能够保存实体到数据库,正如方法名称save这个单词所表明的意思.我们能够在事务之外调用这个方法,这也是我不喜欢使用这个方法保存数据的原因.假如两个实体之间有关系(例如employee表和address表有一对一关系),如果在没有事务的情况下调用这个方法保存employee这个实体,除非调用flush()这个方法,否则仅仅employee实体会被保存. saveOrUpdate saveOrUpdate()方法会执行插入或者更新操作.如果该对象在数据库中已经存在则更新,不

Hibernate的merge与update方法的区别

今天做了个测试,写了个测试用例来看看merge与update时控制台打印出来的日志有什么不一样.实体bean很简单,就id和name两个字段,接下来分别给出以下几种测试情形的控制台日志内容: 1. 数据库记录已存在,更改person的name为一个新的name. merge方法打印出的日志如下: Hibernate: select person0_.id as id0_0_, person0_.name as name0_0_ from person person0_ where person0

Hibernate save, saveOrUpdate, persist, merge, update 区别

Hibernate save, saveOrUpdate, persist, merge, update 区别 - 小黑客 - 博客园https://www.cnblogs.com/xiaoheike/p/5374613.html Hibernate save()与persist()区别 - 山楂树男孩的博客专栏 - CSDN博客https://blog.csdn.net/u010739551/article/details/47253881 hibernate中save,update,save

save(),saveOrUpdate(),merge()的区别

save(),saveOrUpdate(),merge()的区别 Save save()方法能够保存实体到数据库,正如方法名称save这个单词所表明的意思.我们能够在事务之外调用这个方法,这也是我不喜欢使用这个方法保存数据的原因.假如两个实体之间有关系(例如employee表和address表有一对一关系),如果在没有事务的情况下调用这个方法保存employee这个实体,除非调用flush()这个方法,否则仅仅employee实体会被保存. saveOrUpdate saveOrUpdate()

Hibernate学习笔记之关联关系

??关联关系是面向对象分析.面向对象设计最重要的知识,Hibernate完全可以理解这种关联关系,如果映射得当,Hibernate的关联映射将可以大大简化持久层数据的访问.关联关系大致有如下两类: 单向关系:只需单向访问关联端. 双向关系:关联的两端可以互相访问 注:双向关系没有N-1,因为双向关系1-N和N-1是完全相同的. 注意:无论单向关系,还是双向关系,是针对面向对象中的类的调用,与底层数据库关系有所差异,不要搞混了. 专业名词通俗解释: 持久化操作:将数据CRUD(增加(Create)

Oracle 数据库实现数据合并:merge

1.使用update进行数据更新 1)最简单的更新 update tablea a set a.price=1.00 2)带条件的数据更新 update tablea a set a.price = 2.00  where  a.id='02' 3)两张表关联更新为固定值 update tablea a set a.price =3.00 where exits(select 1 from tableb b where a.id=b.id) 将a,b相同id的 a表的price 字段更新为 3.

Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Multiple representations of the same entity解决方法

1.错误信息 Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Multiple representations of the same entity 2.错误原因 因为试图给 某一个new 的Transient对象 的某一个属性赋一个 已经Persistent 对象或者Detached 对象值.导致最后save 或者merge 这个

Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用 ----转----

Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用 Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object). 瞬时态         由new命令开辟内存空间的java对象, eg. Person person = new Person(

[原创]java WEB学习笔记79:Hibernate学习之路--- 四种对象的状态,session核心方法:save()方法,persist()方法,get() 和 load() 方法,update()方法,saveOrUpdate() 方法,merge() 方法,delete() 方法,evict(),hibernate 调用存储过程,hibernate 与 触发器协同工作

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------