hibernate 1对多 inverse配置

在使用hibernate对1对多这种模型进行操作时,总发现多方的外键不能保存,一直为空,百度后发现是inverse的配置错误

根据自己的测试,如下表所示:(1方配置inverse,多方不配置)

inverse setMain sql条数 数据库结果
true set 1条 正确
false set 2 正确
true 未操作 1 明细表缺少外键
false 未操作 2 正确

从上表中可以看出:

只有inverse==true,并且在多方未维护1方时,结果会出错。

其余条件下,均得到正确结果。

分析:

inverse指定由谁来维护外键关系,

如果==false,则由自己(1方)控制

生成sql语句会产生insert update 两条

如果==true,则由对方(多方)进行维护。

只会生成insert 1条语句,提高数据库效率

结论:

在1对多关联关系中,一般将多方设置为主控方(同时需要在多方维护关联关系), 这样将有助于改善性能,不需要在insert后再update,直接insert即可。

参考资料:

http://baike.baidu.com/view/1258648.htm?fr=aladdin

http://www.blogjava.net/wintys/archive/2009/06/13/hibernate_onetomany.html

hibernate 1对多 inverse配置,布布扣,bubuko.com

时间: 2024-12-18 11:30:09

hibernate 1对多 inverse配置的相关文章

Hibernate 配置文件 细节 cascade inverse

今天写东西,在配置关系时 ,随后就将cascade 配置, 而且配的值是false . 尼玛 ,结果很悲催,已启动就报错 ,弄得我云里雾里的,后来仔细检查发现原来是cascade在做该.现总结一下.顺便复习一下inverse . 1.cascade 层叠,有了它我们在操作删除和更新的时候会更加方便.只要在cascade的源头插入或者删除,所有cascade 的关系就会被动的插入或者删除.cascade 有一个值很重要,saveOrUpdate ,Hibernate根据这个属性值来判断一个对象时插

Hibernate框架 主配置文件(Hibernate.cfg.xml) 映射配置 说明

Hibernate.cfg.xml 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final\project\etc\hibernate.properties   <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hiber

hibernate 在tomcat7.X 下配置mysql数据源

先说一点题外话,LZ最近学习java web.今天刚看到hibernate,发现在hibernate配置数据源时网上的资料都太久远了,一般以tomcat 5 版本下的配置居多.而tomcat 7下的配置略有变化,新手找资料困难,可能会略受打击,故整理资料与大家共享,也可作备忘之用!若有不当之处,还请不吝赐教! 1.添加数据库驱动包mysql-connector-java-5.1.13-bin.jar加入到tomcat目录下的lib包中. 注意:网上几乎所有版本都说需要添加commons-dbcp

Hibernate实现有两种配置,xml配置与注释配置

hibernate实现有两种配置,xml配置与注释配置. (1):xml配置:hibernate.cfg.xml (放到src目录下)和实体配置类:xxx.hbm.xml(与实体为同一目录中) <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "ht

Intellij Idea 15 下新建 Hibernate 项目以及如何添加配置

1.说明:Idea 下,项目对应于 Eclipse 下的 workspace,Module 对应于 Eclipse 下的项目.Idea 下,新添加的项目既可以单独作为一个 Project,也可以作为一个 Project 下的 Module. 2.本篇文章介绍内容: (1)如何在 Project 新建 Hibernate Module. (2)如何添加 jar 包到 Module 下. (3)如何添加 hibernate.cfg.xml,以及如何自定义模板. (4)如何添加 Entity.hbm.

NHibernate支持的数据库 NHibernate连接配置 hibernate.cfg.xml中的配置

使用下列数据库时hibernate.cfg.xml中的配置 Microsoft SQL Server 2005/2000 配置如下: <?xml version="1.0" ?>  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >      <session-factory>          <property name="co

(08)Hibernate的多对多映射配置

基本需求是:一个项目可以有多个开发人员,一个开发人员可以参加多个项目,因此项目和开发人员是多对多的关系.本文中的学习重点,还和前几篇文章一样,都是JavaBean类的映射文件中的配置. 1.多对多映射 Project.java package com.rk.hibernate.h_many2many; import java.util.Set; public class Project { private int prjId; private String prjName; private Se

hibernate简单连接mysql数据库配置

使用hibernate连接mysql数据库 1:项目搭建好之后,在lib包中添加必要的jar包,和mysql数据库驱动jar包: jar包可以在hibernate的下载包(hibernate3.3.2.GA)中找到,这里所需要的jar包是: hibernate3.jar,lib/required目录下的所有jar包; 连接数据库所需要的jar包:mysql-connector-java-5.1.7-bin.jar; 如图: 2:jar包引入后编写实体类及映射文件: 实体类是xx.java文件;映

具体解释Hibernate中cascade与inverse

学习hibernate的时候对级联关系的概念老是分不清楚,尤其是cascade.inverse傻傻分不清.以下通过样例来简单说明. 准备工作: 首先创建数据库,新建两张表: 教室表classes (字段此处省) 学生表student(字段此处省) 教室与学生是一对多的关系. 然后新建项目,加入hibernate对两张表的支持. 1.cascade cascade表示级联操作.即两个实体间存在级联关系(一个类是还有一个类中的属性)时,当保存.更新或删除一个实体时,是否对关联的实体做出相应操作(数据