`

Hibernate批量增加和更新带有级联关系的对象

阅读更多
    这里我是Spring和Hibernate一起用的,所以不知道单独使用Hibernate是什么效果,下面总结一下经验,留着以后查看
    这也算是一种挺常见的问题,一个FatherClass下面有多个ChildClass,新增多条FatherClass,如果ChildClass是不同的,比较好处理,只需要FatherClass Set不同的ChildClass就可以了,但是如果ChildClass是一样的,就会造成ChildClass只会第一次新增的时候使用insert的方法,到了第二次就变成了update,即使使用FatherClass.getChildClass.clear()或者是FatherClass.getChildClass.removeall()的方法再进行第二次的新增也会造成update的结果。
     这里说一下我解决的办法,我分成了两部来操作,首先是FatherClass的批量新增,当然只要每次new一个新的FatherClass就能新增了,然后是做子类的新增,把Set<ChildClass>中的子类一个一个取出来,然后new一个ChildClass,Set进去所有的属性和父类,然后再做新增的操作,这样就会每次都进行insert操作了,可能有点笨,但是效果还是挺明显的。
     更新操作的时候子类也比较难处理,我的解决方法是将子类删除,然后再新增新更新后的新子类,所以每次都要FatherClass.getChildClass.clear(),然后再FatherClass.setChildClass(Set<ChildClass>),然后再对FatherClass进行更新操作,这样就达到了子类同时也更新的效果。
分享到:
评论

相关推荐

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     C.1 创建带有@hibernate标记的Java源文件  C.2 建立项目的目录结构  C.3 运行XDoclet工具 附录D 发布和运行netstore应用  D.1 运行netstore所需的软件  D.2 netstore应用的目录结构  D.3 安装SAMPLEDB...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     C.1 创建带有@hibernate标记的Java源文件  C.2 建立项目的目录结构  C.3 运行XDoclet工具 附录D 发布和运行netstore应用  D.1 运行netstore所需的软件  D.2 netstore应用的目录结构  D.3 安装SAMPLEDB...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     C.1 创建带有@hibernate标记的Java源文件  C.2 建立项目的目录结构  C.3 运行XDoclet工具 附录D 发布和运行netstore应用  D.1 运行netstore所需的软件  D.2 netstore应用的目录结构  D.3 安装SAMPLEDB...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     C.1 创建带有@hibernate标记的Java源文件  C.2 建立项目的目录结构  C.3 运行XDoclet工具 附录D 发布和运行netstore应用  D.1 运行netstore所需的软件  D.2 netstore应用的目录结构  D.3 安装SAMPLEDB...

    Hibernate实战(第2版 中文高清版)

     14.3.1 联结关系和关联   14.3.2 报表查询   14.3.3 利用子查询   14.4 小结   第15章 高级查询选项   15.1 利用条件和示例查询   15.1.1 基本的条件查询   15.1.2 联结和动态抓取   15.1.3 投影...

    Hibernate中文帮助文档.rar

    最后,可能会涉及到一些高级话题,如Hibernate的性能优化、实体生命周期管理、批量操作、级联操作等。 总的来说,《Hibernate中文帮助文档》是学习和掌握Hibernate框架的必备资料,无论你是初学者还是经验丰富的...

    hibernate2ch_reference.pdf

    这份详尽的Hibernate文档"hibernate2ch_reference.pdf"将带你深入理解Hibernate的核心概念和最佳实践,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅,进一步提升你在Java ORM领域的专业能力。

    [原]在MyEclipse中开发Hibernate入门

    Hibernate是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式处理数据。这篇文章将带你一步步地了解如何在MyEclipse环境中配置并使用Hibernate进行开发。 1. *...

    NHibernate中文教程+activerecord

    它可以创建、更新、删除对象并保存到数据库。事务管理和对象状态管理都是通过Session来实现的。 4. **查询** NHibernate提供多种查询方式:HQL(Hibernate Query Language)、Criteria API、Linq-to-NHibernate等...

    提高Java开发数据库效率的技巧.zip

    - 在ORM框架如Hibernate中,合理设置懒加载和级联加载策略,避免不必要的数据获取。 - 注意N+1查询问题,一次获取所有关联数据,而不是在循环中逐一查询。 6. **事务管理**: - 适当调整事务隔离级别,根据业务...

    MyBatis技术文档.pdf

    - 定义为半自动 ORM 框架,意味着它不像 Hibernate 那样提供完整的对象关系映射功能,而是更注重 SQL 语句的灵活性和可定制性。 3. **下载**: - 官方下载地址: [https://github.com/mybatis/mybatis-3]...

    struts2的ssh手工配置全过程还带一个登陆例子的配置

    - `jdbc.batch_size`:设置JDBC批量更新大小。 #### 五、Spring数据源配置 **1. applicationContext.xml** - **配置文件片段**: ```xml &lt;!-- 密码等其他属性省略 --&gt; ``` - **主要属性解释**: -...

    Spring.3.x企业应用开发实战(完整版).part2

    6.2.1 带有横切逻辑的实例 6.2.2 JDK动态代理 6.2.3 CGLib动态代理 6.2.4 AOP联盟 6.2.5 代理知识小结 6.3 创建增强类 6.3.1 增强类型 6.3.2 前置增强 6.3.3 后置增强 6.3.4 环绕增强 6.3.5 异常抛出增强 6.3.6 引介...

    Spring3.x企业应用开发实战(完整版) part1

    6.2.1 带有横切逻辑的实例 6.2.2 JDK动态代理 6.2.3 CGLib动态代理 6.2.4 AOP联盟 6.2.5 代理知识小结 6.3 创建增强类 6.3.1 增强类型 6.3.2 前置增强 6.3.3 后置增强 6.3.4 环绕增强 6.3.5 异常抛出增强 6.3.6 引介...

Global site tag (gtag.js) - Google Analytics