对象关系_many2many
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的更多相关文章
- 死去活来,而不变质:Domain Model(领域模型) 和 EntityFramework 如何正确进行对象关系映射?
写在前面 阅读目录: 设计误区 数据库已死 枚举映射 关联映射 后记 在上一篇<一缕阳光:DDD(领域驱动设计)应对具体业务场景,如何聚焦 Domain Model(领域模型)?>博文中, ...
- 解析大型.NET ERP系统数据访问 对象关系映射框架LLBL Gen Pro
LLBL Gen Pro是一个为.NET开发人员设计的的对象关系映射(ORM)框架,与NHibernate,Entity Framework等框架一样,通过实体与数据表的映射,实现关系数据库持久化. ...
- Hibernate(开放源代码的对象关系映射框架)
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自 ...
- ORM即 对象-关系映射(转自:微冷的雨)
ORM即 对象-关系映射: 将数据库中的数据关系表,映射为实体对象. 灵动思绪EF(Entity FrameWork) 作者: 微冷的雨 来源: 博客园 发布时间: 2013-01-22 16:2 ...
- LLBL Gen Pro 4.2 Lite 免费的对象关系映射开发框架与工具
LLBL Gen Pro是一款优秀的对象关系映射开发框架,自2003年发布以来,一直有广泛的客户群.LLBL Gen Pro有几个标志性的版本,2.5/2.6是一个很稳定的版本,公司的一些旧的项目仍然 ...
- hibernate(四)__由表逆向创建Domain对象和对象关系映射文件
之前我们是手写Domain对象和对象关系映射文件->然后生成数据库中的Table. 现在我们反过来先在数据库中建好Table->然后用工具生成Domain对象和对象关系映射文件. 步骤: ...
- 对象关系映射ORM
对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效 ...
- Hibernate入门5持久化对象关系和批量处理技术
Hibernate入门5持久化对象关系和批量处理技术 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv 前言: 前面学习了Hiberna ...
- android对象关系映射框架ormlite之一对多(OneToMany)
前两天,用ormlite对单张表进行了基本的操作,但是,我们知道通常情况对于单张表格进行操作在实际情况中很前两天不现实,那么ormlite能否像Hibenate那样实现多张表之间的一对多,多对多(即O ...
随机推荐
- Swift与JS的交互
Swift与JS的交互 原理 同Object-C与JS交互的大同小异,只是方法形式改变了. 首先我们需要引入iOS7.0出来的JavaScriptCore.framework JavaScriptCo ...
- DOCTYPE的作用以及标准模式和兼容模式的区别
<!doctype>声明必须处于HTML文档的头部,在<html>标签之前,告知浏览器的解析器用什么文档标准解析这个文档.DOCTYPE不存在或格式不正确会导致文档以兼容模式呈 ...
- Vim 8.0
安装Vim 8.0yum install ncurses-devel wget https://github.com/vim/vim/archive/master.zip unzip master.z ...
- [MySQL]典型的行列转换
列变成行 测试数据库数据样式: 应用的sql语句: SELECT TM,NAME,SUM(GE) AS 'GE',SUM(GD) AS 'GD',SUM(CT) AS 'CT',SUM(NUM) AS ...
- Python Selenium 文件上传之SendKeys
昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直 ...
- 第 7 章 多主机管理 - 046 - 创建 Machine
创建 Machine Machine 就是运行 docker daemon 的主机. “创建 Machine” 指的就是在 host 上安装和部署 docker. 创建第一个 machine: hos ...
- Redis之下载安装及基本使用
redis window系统的redis是微软团队根据官方的linux版本高仿的 官方原版: https://redis.io/ 中文官网:http://www.redis.cn 1.1 redis下 ...
- Fragment的onCreateView和onActivityCreate之间的区别(转)
看了有关这个问题的几篇博文,几乎都是引用了stackoverflow上的一个回答: 问题: I know that a fragment’s view hierarchy has to be infl ...
- 廖雪峰网站:学习python函数—函数参数(三)
1.*args # 位置参数,计算x2的函数 def power(x): return x * x p = power(5) print(p) # 把power(x)修改为power(x, n),用来 ...
- spring boot(十八)集成FastDFS文件上传下载
上篇文章介绍了如何使用Spring Boot上传文件,这篇文章我们介绍如何使用Spring Boot将文件上传到分布式文件系统FastDFS中. 这个项目会在上一个项目的基础上进行构建. 1.pom包 ...