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. 【Linux】人脸识别的封装

    写了一个linux下的Face Recognition的封装,当作是练习.语言: C++的封装,结合opencv,使用方便.下载源码:https://github.com/zacario-li/Fac ...

  2. 全排列问题Ⅰ(Java实现)

    给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1 ...

  3. JAVA基础知识总结:二十一

    一.URL和URLConnection 1.HTTP 超文本传输协议 是一个应用层的协议 是一个被动的协议 只有客户端主动给服务端发送消息,服务端才会给客户端一个响应 2.URL 统一的资源定位符(网 ...

  4. jq 折面板+tab切换(自己封装的插件哦!!)

    如上图所示的一个折面板效果+tab切换:最重要的js代码如下: 对于布局简单介绍下: hot_wrap_li 这个是带箭头的横条: Arrow 这个是箭头的div:hot_wrap_li_wrap 这 ...

  5. 动态规划-填格子问题 Domino and Tromino Tiling

    2018-09-01 22:38:19 问题描述: 问题求解: 本题如果是第一看到,应该还是非常棘手的,基本没有什么思路. 不妨先从一种简化的版本来考虑.如果仅有一种砖块,那么,填充的方式如下.

  6. appium自动化测试 环境搭建

    最 近接手的项目是移动端自动化测试 ,需要用的appium ,头一回使用, 项目特点:1)数据有时效性,需要在短时间内验证大量数据, 2) 人工去一个一个核对发现不了太多BUG. 环境搭建:参考虫师的 ...

  7. ActionCable的部署(参考Gorails)

    Gorails视频 https://gorails.com/deploy/actioncable Action Cable – Integrated WebSockets for Rails http ...

  8. php url处理

    http_build_query() $data = array("name"=>"callback" , "value"=>& ...

  9. MySQL表类型和存储引擎

    一.基本介绍 从事务安全性的角度,可以把存储引擎分为两大类: 事务安全: BDB和innodb; 事务非安全性: myisam 和 memory 二.存储引擎的比较图 看你的mysql当前默认的存储引 ...

  10. 4.1.4 Nim

    Problem description: 有n堆石子,每堆各有ai颗石子.A和B轮流从非空的石子堆中取走至少一颗石子.A先取,取光所有石子的一方获胜.当双方都采用最佳策略时,谁会获胜? 1<=n ...