jdbc:

package demo.test.many2many;

import java.util.HashSet;
import java.util.Set; public class Student {
private int Stu_id;
private String Stu_name;
private Set<Teacher> teacher = new HashSet<>();
public int getStu_id() {
return Stu_id;
}
public void setStu_id(int stu_id) {
Stu_id = stu_id;
}
public String getStu_name() {
return Stu_name;
}
public void setStu_name(String stu_name) {
Stu_name = stu_name;
}
public Set<Teacher> getTeacher() {
return teacher;
}
public void setTeacher(Set<Teacher> teacher) {
this.teacher = teacher;
}
public Student(int stu_id, String stu_name, Set<Teacher> teacher) {
Stu_id = stu_id;
Stu_name = stu_name;
this.teacher = teacher;
}
public Student(String stu_name, Set<Teacher> teacher) {
Stu_name = stu_name;
this.teacher = teacher;
}
public Student(String stu_name) {
Stu_name = stu_name;
}
@Override
public String toString() {
return "Student [Stu_id=" + Stu_id + ", Stu_name=" + Stu_name + "]";
} }
package demo.test.many2many;

import java.util.HashSet;
import java.util.Set; public class Teacher {
private int tea_id;
private String name;
private Set<Student> student = new HashSet<>(); public Teacher() {
} public int getTea_id() {
return tea_id;
} public void setTea_id(int tea_id) {
this.tea_id = tea_id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Set<Student> getStudent() {
return student;
} public void setStudent(Set<Student> student) {
this.student = student;
} public Teacher(int tea_id, String name, Set<Student> student) {
this.tea_id = tea_id;
this.name = name;
this.student = student;
}
public Teacher(String name, Set<Student> student) {
this.name = name;
this.student = student;
}
public Teacher(String name) {
this.name = name;
} @Override
public String toString() {
return "Teacher [tea_id=" + tea_id + ", name=" + name + "]";
} }

.xml文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="demo.test.many2many">
<!-- 根据包名找类,根据类名加载对应的类 -->
<class name="Student" table="s_student">
<id name="Stu_id" column="stu_id">
<generator class="native"/>
</id>
<property name="Stu_name" column="Stu_name"/>
<!--
t_tea_stu:中间表的表名
当前对象对应的ID列名和中间表
设置中间表的那一列与当前表关联
--> <set name="teacher" table="t_tea_stu">
<key column="id_stu" /><!-- 设置对面的外键 -->
<!-- class="对方的类名" column="" -->
<many-to-many class="Teacher" column="id_tea"/>
</set> </class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="demo.test.many2many">
<!-- 根据包名找类,根据类名加载对应的类 -->
<class name="Teacher" table="t_teacher">
<id name="tea_id" column="t_id">
<generator class="native"/>
</id>
<property name="name" column="t_name"/> <!--
inverse:管理权
ERROR:Duplicate entry '1-2' for key 'PRIMARY'
-->
<set name="student" table="t_tea_stu" >
<key column="id_tea"/> <!-- 设置对面的外键 -->
<many-to-many class="Student" column="id_stu"/>
</set>
</class>
</hibernate-mapping>

test测试类:

package demo.test.many2many;

import org.hibernate.Session;
import org.junit.Test; import demo.test.utiltool.UtilTool; public class Many2Many {
//关联关系one2one;one2many;many2one;many2many
@Test
public void testsave(){
Teacher tea1 = new Teacher("张老师");
Teacher tea2 = new Teacher("刘老师");
Student stu1 = new Student("王同学");
Student stu2 = new Student("李同学");
//将学生添加给老师
tea1.getStudent().add(stu1);
tea1.getStudent().add(stu2);
tea2.getStudent().add(stu1);
tea2.getStudent().add(stu2); Session session = UtilTool.getInstance().getSession();
session.beginTransaction(); session.save(stu1);
session.save(stu2);
session.save(tea1);
session.save(tea2);
session.getTransaction().commit();
session.close(); }
}

最后,记得将各.hbm.xml文件引入cfg.xml

对象关系_many2many的更多相关文章

  1. 死去活来,而不变质:Domain Model(领域模型) 和 EntityFramework 如何正确进行对象关系映射?

    写在前面 阅读目录: 设计误区 数据库已死 枚举映射 关联映射 后记 在上一篇<一缕阳光:DDD(领域驱动设计)应对具体业务场景,如何聚焦 Domain Model(领域模型)?>博文中, ...

  2. 解析大型.NET ERP系统数据访问 对象关系映射框架LLBL Gen Pro

    LLBL Gen Pro是一个为.NET开发人员设计的的对象关系映射(ORM)框架,与NHibernate,Entity Framework等框架一样,通过实体与数据表的映射,实现关系数据库持久化. ...

  3. Hibernate(开放源代码的对象关系映射框架)

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自 ...

  4. ORM即 对象-关系映射(转自:微冷的雨)

    ORM即 对象-关系映射: 将数据库中的数据关系表,映射为实体对象. 灵动思绪EF(Entity FrameWork) 作者: 微冷的雨  来源: 博客园  发布时间: 2013-01-22 16:2 ...

  5. LLBL Gen Pro 4.2 Lite 免费的对象关系映射开发框架与工具

    LLBL Gen Pro是一款优秀的对象关系映射开发框架,自2003年发布以来,一直有广泛的客户群.LLBL Gen Pro有几个标志性的版本,2.5/2.6是一个很稳定的版本,公司的一些旧的项目仍然 ...

  6. hibernate(四)__由表逆向创建Domain对象和对象关系映射文件

    之前我们是手写Domain对象和对象关系映射文件->然后生成数据库中的Table. 现在我们反过来先在数据库中建好Table->然后用工具生成Domain对象和对象关系映射文件. 步骤: ...

  7. 对象关系映射ORM

    对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效 ...

  8. Hibernate入门5持久化对象关系和批量处理技术

    Hibernate入门5持久化对象关系和批量处理技术 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv 前言: 前面学习了Hiberna ...

  9. android对象关系映射框架ormlite之一对多(OneToMany)

    前两天,用ormlite对单张表进行了基本的操作,但是,我们知道通常情况对于单张表格进行操作在实际情况中很前两天不现实,那么ormlite能否像Hibenate那样实现多张表之间的一对多,多对多(即O ...

随机推荐

  1. python第二章(2)列表

    names=["zhangyang","guyun","xiangpeng","leiming","xulia ...

  2. 学习笔记24—win10环境下python版libsvm的安装

    1.前言 由于毕业设计需要用到libsvm,所以最近专心于配置libsvm,曾经尝试过在matlab中安装,但是没有成功.最终在Python环境中完成安装. 2.LIBSVM介绍 LIBSVM 是台湾 ...

  3. 学习笔记4-pathon的range()函数和list()函数

    使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的slide,最后分析一个好玩儿的冒泡程序. 这里记 ...

  4. java操作vaftpd实现上传、下载

    1.配置文件conf/vsftpd.properties (我是单独写了一个配置文件,你可以直接写在application中) vsftpd.ip=192.168.**.** vsftpd.user= ...

  5. iOS获取UUID

    转自:<iOS获取设备的唯一标识的方法总结以及最好的方法> 参考:<获取iOS设备唯一标识> 总结一下: 1.代码采用CFUUID+KeyChain的实现方式. 2.CFUUI ...

  6. css的table布局

    1.table中对tr设置margin-top是没有作用的.

  7. lua中产生 1 - n 之间不重复随机数

    local function GetRandomNumList(len) local rsList = {} ,len do table.insert(rsList,i) end local num, ...

  8. Asp.net core 学习笔记 (Excel 读写)

    EPPlus 已经支持 .net core 了 https://www.nuget.org/packages/EPPlus https://github.com/JanKallman/EPPlus 写 ...

  9. MyBatis配置文件中的常用配置

    一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: <?xml version="1 ...

  10. 【转】 详解C中volatile关键字

    转自: http://www.cnblogs.com/yc_sunniwell/archive/2010/06/24/1764231.html volatile提醒编译器它后面所定义的变量随时都有可能 ...