`
cakin24
  • 浏览: 1392038 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Hibernate的inverse属性的用法实战

阅读更多
一 简介
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 (?, ?, ?, ?)

 



 
  • 大小: 19.5 KB
1
1
分享到:
评论

相关推荐

    Hibernate开发租房系统2 源码

    描述提到“使用cascade和inverse优化区和街道关联关系”,这意味着我们将深入理解Hibernate的cascade和inverse属性,以及它们在双向一对多关联关系中的应用。 Hibernate是Java领域中广泛使用的对象关系映射(ORM)...

    夏昕-Hibernate+开发指南.pdf

    - **主要内容**:涉及Hibernate框架的使用方法、实践经验以及作者在Hibernate官方论坛上的交流心得。 - **定位区别**:不同于Hibernate官方参考文档(Hibernate Reference),本文档旨在为开发者提供一个学习和掌握...

    Hibernate 入门

    #### 二、Hibernate入门实战 - **第一个Hibernate程序**: - 创建一个简单的Java类,定义实体模型。 - 使用Hibernate提供的API创建SessionFactory和Session。 - 通过Session执行CRUD操作。 - **配置文件**: - ...

    Hibernate多对多映射

    本实例将详细阐述如何在Hibernate中实现多对多映射,并通过源代码和测试程序进行实战演示。 在数据库设计中,多对多关系意味着一个实体可以与多个其他实体关联,反之亦然。例如,学生可以选修多门课程,而一门课程...

    精通Spring+4.x++企业应用开发实战

    在深入探讨《精通Spring 4.x 企业应用开发实战》这一主题之前,我们先来了解一下Spring框架的基础概念及其在企业级应用开发中的重要性。Spring框架是一个开源的Java平台,它提供了一种全面的方式来构建复杂的企业级...

    java面试题综合

    65. Class与Student的Hibernate配置:创建映射文件,定义属性和关联关系。 66. HQL语句:如FROM Student WHERE name='李某某' AND classId BETWEEN 4 AND 7。 67. inverse:反转关系,控制关联表的更新责任。 68....

    J2EE学习路线及重要知识点.pdf

    8. **Hibernate**:ORM(对象关系映射)原理,Hibernate的开发步骤,主要接口(尤其是Session),普通属性和关联关系映射,Native SQL,inverse lazy cascade,继承关系映射,HQL,性能优化(一级缓存,二级缓存,...

    struts入门教程

    Struts2框架内置了对IOC(Inverse of Control,控制反转)模式的支持,通过与Spring框架的集成,可以实现依赖注入,简化对象之间的依赖管理,提高代码的可测试性和可维护性。 #### 八、Struts2标签 Struts2提供了...

Global site tag (gtag.js) - Google Analytics