对象关系_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 ...
随机推荐
- 颜色选择器 rgb 与16进制 颜色转换
1. h5 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 全栈性能测试修炼宝典--Jmeter实战(一)
性能测试方向职业发展 1.软件测试发展路线 我们可以暂且把软件测试职业路线分为3个方向,分别是业务路线.技术路线.管理路线:4个象限,分别为执行层.中层.中高层过渡.高层. (1)业务路线 常见业务路 ...
- ip网关配置
流量查看watch more /proc/net/devip子网查询https://www.sojson.com/convert/subnetmask.htmlhttp://ip.gchao.cn/ ...
- firewalld管理防火墙常用命令
1.查看防火墙的状态 [root@localhost HMK]# firewall-cmd --state 查看防火墙的运行状态 not running [root@localhost HMK]# s ...
- js插件---bootstrap插件daterangepicker是什么
js插件---bootstrap插件daterangepicker是什么 一.总结 一句话总结:日期段选择插件,也可选择日期 日期段选择插件,也可选择日期 1.daterangepicker 控件如何 ...
- win10 java环境变量
https://jingyan.baidu.com/article/fd8044fa2c22f15031137a2a.html
- makefile 里的 := , = , +=
:= 是在这行代码的时候,直接展开右边的变量. = 是在最终左边变量被使用的时候,才把右边的变量展开. https://stackoverflow.com/questions/10227598/wha ...
- 批量显示QC结果的利器(转)
作者:greenhillman MultiQC homepage: http://multiqc.info功能:把多个测序结果的qc结果整合成一个报告.支持fastqc.trimmomatic.bow ...
- English trip M1 - PC6 Likes and Dislike Teacher:Jade
In this lesson you will learn to talk about likes and dislikes. 课上内容(Lesson) # 通常在习惯性的表达式用 it's 来表达w ...
- dcoker 安装mysql和数据持久化
# mysql 镜像下载 docker pull mysql ( 版本自己选择) # run 服务 docker run --name mysql.5.5 -p 3306:3306 -e MYSQ ...