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. MySQL学习(四)

    1 MySQL日期和时间类型 创建一个包含DATE类型的表 mysql> create table test3( -> star varchar(20) not null default ...

  2. Codeforces 797E - Array Queries

    E. Array Queries 题目链接:http://codeforces.com/problemset/problem/797/E time limit per test 2 seconds m ...

  3. 第 3 章 镜像 - 019 - 使用公共 Registry

    保存和分发镜像的最直接方法就是使用 Docker Hub.https://hub.docker.com/ Docker Hub 是 Docker 公司维护的公共 Registry.用户可以将自己的镜像 ...

  4. 如何在ubuntu中安装中文输入法?

    如何在ubuntu中安装中文输入法  在桌面右上角设置图标中找到“System Setting”,双击打开. 在打开的窗口里找到“Language Support”,双击打开.  可能打开会说没有安装 ...

  5. sublime text---注释

    Sublime在进行前端开发时非常棒,当然也少不了众多的插件支持,DocBlocker是在Sublime平台上开发一款自动补全代码插件,支持JavaScript (including ES6), PH ...

  6. 注册表的作用、bat文件中REG ADD命令添加注册表项以及bat

    注册表的用途与设置 注册表是windows的核心,里面储存着大量的系统信息,说白了就是一个庞大的数据库.如果你不懂什么是数据库,那没关系,不影响你了解注册表,不过最好对数据库有所了解.注册表里面所有的 ...

  7. Eclipse中打包插件Fat Jar的安装与使用

    转自:https://www.cnblogs.com/wbyp/p/6222182.html     Eclipse可以安装一个叫Fat Jar的插件,用这个插件打包非常方便,Fat Jar的功能非常 ...

  8. 雷林鹏分享:XML Parser

    XML Parser 所有现代浏览器都有内建的 XML 解析器. XML 解析器把 XML 文档转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象. 解析 XML 文档 下面的 ...

  9. 本地广播的简单示例 --Android开发

    1.局部通知管理器LocalBroadcastManager,用于同一个应用中不同组件之间发送广播.由于是在同应用中发送广播,所以使用它安全性.效率也会提高. 2.本例实现简单的发送本地广播的案例 点 ...

  10. LeetCode--005--最长回文子串(java)

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...