关于hibernate用save方法保存对象所遇到的一个问题

  执行数据库循环保存操作时,开始想只new一个对象,这样会节省一些空间,所以在for循环外面执行new操作,在for循环里面则执行设值操作,然后每次都提交事务到数据库。如下图:

结果发现数据库里只插入了一条数据,查看sql语句才发现问题的所在,sql语句如下:

hibernate只执行了一次insert操作,剩下的都是更新操作,所以最后表里面只有一条数据。

然后我就进行了修改,在每一次for循环里都new一个对象,如下图:

执行插入操作后查看sql语句,发现这次就插入成功了,执行了5次的insert操作,

所以,根据以上可知道,hibernate在for循环里面执行save()方法时每次都必须new一个新对象,这样才能正确的插入数据。

时间: 2024-10-25 20:08:06

关于hibernate用save方法保存对象所遇到的一个问题的相关文章

hibernate第一个例子-保存对象

3.hibernate第一个例子-保存对象 使用hibernate框架需要导入的jar包: antlr-2.7.6 backport-util-concurrent c3p0-0.9.1 commons-collections-3.1    apache集合帮助的包 commons-logging-1.1.1日志 dom4j-1.6.1解析XML ehcache-1.5.0缓存框架 hibernate3hibernate核心包 javassist-3.9.0.GA代理模式工具包,解决懒加载问题

hibernate的save方法与sql的insert的区别

public boolean addDiscuss(Discuss discuss) {// Session session = HibernateSessionFactory.getSession();// 获得Session对象// try {// session.save(discuss);// 保存信息 ,不可行error,Cannot add or update a child row: a foreign key constraint fails // } catch (Except

Hibernate的save方法不能进行数据库插入

问题描述 在 MyEcplise 上运行 tomcat,利用 po 模板自动生成 po 文件,调用 po 的 save 方法,不报错,但是无法把数据插入数据库 applicationContext.xml 中文件配置 <bean id="SysConfigDAO" class="com.po.SysConfigDAO"></bean> po 中 dao 文件的引用 public class UserDAO extends BaseHibern

SpringMVC+Hibernate架构save方法事务未提交

今天交给外包的活遇到一个问题,喊我一起研究,最后解决,让我对spring的事务管理又加深了印象. 先简单说一下项目:项目是Spring和Hibernate集成的JavaEE项目,MVC架构. 外包在service层一个以get开头的方法中写了一些业务逻辑,分别调用了dao层的save和get方法,但是发现get的数据正常显示,数据表中该save的并没有存入数据表,查hibernate生成的sql也只查到了get的语句,没有发现save的语句,也没有报任何错误.很奇怪的现象,不怕报错,就怕它不报错

关于类、方法、对象(实例):通过一个例子看一下self都做了哪些事情

我们在定义一个类时,经常会在类的各个方法中看到self,那么在程序执行时self到底起了什么作用,什么时候要加self,这一点需要我们思考并好好理解.之前在学习时没有想这么多,加之用pycharm写代码,很多地方都自动补全了,有些地方没加self,会提示错误,然后补全,没有想过这个过程,今天刚好整理一下. 1.先简单说明一下self的含义 类的方法与普通的函数只有一个特别的区别 -- 它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值, Python 会提供这个值.这

hibernate学习(5)——对象状态与一级缓存

1.对象状态 1.1   状态介绍 hibernate 规定三种状态:瞬时态.持久态.脱管态 瞬时态:transient,session没有缓存对象,数据库也没有对应记录.没有与hibernate关联,与数据库中的记录没有产生关联. OID特点:没有值 持久态:persistent,session缓存对象,数据库最终会有记录.(事务没有提交)与hibernate关联,对象有id OID特点:有值 脱管态:detached,session没有缓存对象,数据库有记录.没有与hibernate关联,对

01-03-02-2【Nhibernate (版本3.3.1.4000) 出入江湖】CRUP操作-Save方法的一些问题

NHibernate--Save方法: CustomerService.cs 1 public void Save(Customer customer) 2 { 3 ISession session = _sessionManager.GetSession(); 4 ITransaction transaction = session.BeginTransaction(); 5 6 try 7 { 8 session.Save(customer); 9 transaction.Commit();

mongoose中Documents的save方法

调用save方法保存数据有的时候是插入有时候是更新, 数据库 我知道save在保存的时候会检测数据的更改,只是更新更改的部分.所以我重复save时,只是createAt更改那么我最后只应该保存了一条数据,不是2条. 当我保存完数据后短时间内重复保存,确实只是看到保存数据只是更新createAt,并没有insert数据,但是过一段较长时间后,我同样保存重复数据就又会insert新的数据. 奇怪! 我知道了,我重启服务器了.... 使用nodemon开启服务器,我保存文件后自动刷新重启服务器后,感觉

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

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