一 简介
1 <set>节点的inverse属性指定关联关系的控制方向,默认值为false,表示由one方来维护。
2 关联关系中,inverse="false",表示不反转,为主动方(one方),由主动方负责维护关联关系。
3 在一对多关联中,只能设置one方的inverse为ture,这将有助于性能的改善。
二 配置方法
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
<hibernate-mapping>
<class name="com.imooc.entity.Grade" table="grade">
<id name="gid" column="gid" type="java.lang.Integer">
<generator class="increment"></generator>
</id>
<property name="gname" type="java.lang.String">
<column name="gname" length="20" not-null="true"></column>
</property>
<property name="gdesc">
<column name="gdesc"></column>
</property>
<!-- 配置一对多关联关系 ,设置inverse属性未true,由多方来维护关联关系-->
<set name="students" table="student" inverse="true">
<key column="gid"></key>
<one-to-many class="com.imooc.entity.Student"/>
</set>
</class>
</hibernate-mapping>
三 测试代码
package com.imooc.test;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.imooc.entity.Grade;
import com.imooc.entity.Student;
import com.imooc.util.HibernateUtil;
/*
* 单向多对一(学生--->班级)
*/
public class Test02 {
public static void main(String[] args) {
save();
}
//保存
public static void save(){
Grade g=new Grade("Java一班","Java软件开发一班");
Student stu1=new Student("慕女神", "女");
Student stu2=new Student("小慕慕", "男");
//设置关联关系
g.getStudents().add(stu1);
g.getStudents().add(stu2);
stu1.setGrade(g);
stu2.setGrade(g);
Session session=HibernateUtil.getSession();
Transaction tx=session.beginTransaction();
session.save(g);
session.save(stu1);
session.save(stu2);
tx.commit();
HibernateUtil.closeSession(session);
}
}
四 测试结果
Hibernate: select max(gid) from grade
Hibernate: select max(sid) from student
Hibernate: insert into grade (gname, gdesc, gid) values (?, ?, ?)
Hibernate: insert into student (sname, sex, gid, sid) values (?, ?, ?, ?)
Hibernate: insert into student (sname, sex, gid, sid) values (?, ?, ?, ?)
相关推荐
描述提到“使用cascade和inverse优化区和街道关联关系”,这意味着我们将深入理解Hibernate的cascade和inverse属性,以及它们在双向一对多关联关系中的应用。 Hibernate是Java领域中广泛使用的对象关系映射(ORM)...
- **主要内容**:涉及Hibernate框架的使用方法、实践经验以及作者在Hibernate官方论坛上的交流心得。 - **定位区别**:不同于Hibernate官方参考文档(Hibernate Reference),本文档旨在为开发者提供一个学习和掌握...
#### 二、Hibernate入门实战 - **第一个Hibernate程序**: - 创建一个简单的Java类,定义实体模型。 - 使用Hibernate提供的API创建SessionFactory和Session。 - 通过Session执行CRUD操作。 - **配置文件**: - ...
本实例将详细阐述如何在Hibernate中实现多对多映射,并通过源代码和测试程序进行实战演示。 在数据库设计中,多对多关系意味着一个实体可以与多个其他实体关联,反之亦然。例如,学生可以选修多门课程,而一门课程...
在深入探讨《精通Spring 4.x 企业应用开发实战》这一主题之前,我们先来了解一下Spring框架的基础概念及其在企业级应用开发中的重要性。Spring框架是一个开源的Java平台,它提供了一种全面的方式来构建复杂的企业级...
65. Class与Student的Hibernate配置:创建映射文件,定义属性和关联关系。 66. HQL语句:如FROM Student WHERE name='李某某' AND classId BETWEEN 4 AND 7。 67. inverse:反转关系,控制关联表的更新责任。 68....
8. **Hibernate**:ORM(对象关系映射)原理,Hibernate的开发步骤,主要接口(尤其是Session),普通属性和关联关系映射,Native SQL,inverse lazy cascade,继承关系映射,HQL,性能优化(一级缓存,二级缓存,...
Struts2框架内置了对IOC(Inverse of Control,控制反转)模式的支持,通过与Spring框架的集成,可以实现依赖注入,简化对象之间的依赖管理,提高代码的可测试性和可维护性。 #### 八、Struts2标签 Struts2提供了...