hibernate多对多映射关系实现
Course.hbm.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="model">
<class name="Course" table="t_course">
<id name="id" column="courseId">
<generator class="native"></generator>
</id>
<property name="name" column="courseName"></property>
</class>
</hibernate-mapping>
Course2.hbm.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="model">
<class name="Course2" table="t_course2">
<id name="id" column="courseId">
<generator class="native"></generator>
</id>
<property name="name" column="courseName"></property>
<set name="students" table="student_course2" inverse="true">
<key column="course_id"></key>
<many-to-many class="model.Student2" column="student_id"></many-to-many>
</set>
</class>
</hibernate-mapping>
Student.hbm.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="model">
<class name="Student" table="t_student">
<id name="id" column="studentId">
<generator class="native"></generator>
</id>
<property name="name" column="studentName"></property>
<set name="courses" table="student_course" cascade="save-update">
<key column="student_id"></key>
<many-to-many class="model.Course" column="course_id"></many-to-many>
</set>
</class>
</hibernate-mapping>
Student2.hbm.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="model">
<class name="Student2" table="t_student2">
<id name="id" column="studentId">
<generator class="native"></generator>
</id>
<property name="name" column="studentName"></property>
<set name="courses" table="student_course2" cascade="save-update">
<key column="student_id"></key>
<many-to-many class="model.Course2" column="course_id"></many-to-many>
</set>
</class>
</hibernate-mapping>
StudentTest.java:
package service;
import java.util.Iterator;
import java.util.Set;
import model.Course;
import model.Course2;
import model.Student;
import model.Student2;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import util.HibernateUtil;
public class StudentTest {
SessionFactory sessionfactory=HibernateUtil.getSessionFactory();//获取Session工厂
private Session session;
@Before
public void setUp() throws Exception {
session=sessionfactory.openSession();//生成一个新的session
session.beginTransaction();//开启事务
}
@After
public void tearDown() throws Exception {
session.getTransaction().commit();//提交事务
session.close();//关闭session
}
@Test
public void testSave1(){
Course course1=new Course();
course1.setName("语文");
Course course2=new Course();
course2.setName("数学");
Student student1=new Student();
student1.setName("一号");
student1.getCourses().add(course1);
student1.getCourses().add(course2);
Student student2=new Student();
student2.setName("二号");
student2.getCourses().add(course1);
student2.getCourses().add(course2);
session.save(student1);
session.save(student2);
}
@Test
public void testLoad1(){
Student student=(Student) session.get(Student.class,1);
Set<Course> courses=(Set<Course>)student.getCourses();
Iterator it=courses.iterator();
while(it.hasNext()){
Course c=(Course) it.next();
System.out.println(c.getName());
}
}
@Test
public void testSave2(){
Course2 course1=new Course2();
course1.setName("语文");
Course2 course2=new Course2();
course2.setName("数学");
Student2 student1=new Student2();
student1.setName("三号");
student1.getCourses().add(course1);
student1.getCourses().add(course2);
Student2 student2=new Student2();
student2.setName("四号");
student2.getCourses().add(course1);
student2.getCourses().add(course2);
session.save(student1);
session.save(student2);
}
@Test
public void testLoad2(){
Course2 course=(Course2) session.get(Course2.class,1);
Set<Student2> students=(Set<Student2>)course.getStudents();
Iterator it=students.iterator();
while(it.hasNext()){
Student2 s=(Student2) it.next();
System.out.println(s.getName());
}
}
}
转载于:https://www.cnblogs.com/daochong/p/4950845.html
hibernate多对多映射关系实现相关推荐
- Hibernate多对多映射 - 连接表
Hibernate多对多映射 - 连接表 今天我们将使用XML和注释配置来研究Hibernate多对多映射.之前我们看过如何在Hibernate中实现One To One和One To Many映射. ...
- Hibernate(五)多对多映射关系
Many to Many 映射关系(没尝试映射hibernate支持的java类型) 双向多对多外键关联(XML/Annotation) (xml和annotation都实现了) 单向多对多外键关联( ...
- java框架篇---hibernate(一对多)映射关系
一对多关系可以分为单向和双向. 一对多关系单向 单向就是只能从一方找到另一方,通常是从主控类找到拥有外键的类(表).比如一个母亲可以有多个孩子,并且孩子有母亲的主键作为外键.母亲与孩子的关系就是一对多 ...
- hibernate多对多映射拆成2个一对多映射(注解)
hibernate的many to many确实很是方便我们处理实体和集合间的关系,并可以通过级联的方法处理集合,但有的时候many to many不能满足我们的需要,比如 用户<---> ...
- Mybatis使用Association解决多对一映射关系
association :处理多对一的映射关系 property:需要处理的映射关系的属性名 javatype:该属性的类名 <resultMap id="empAndDeptResu ...
- Hibernate 多对多映射实列
Hibernate 3.0.5 1.Usergroup.hbm.xml 用户组表 <set name="users" table="Groupan ...
- java中的多对多关系解析_Java中多对多映射关系(转)
多对对的映射,可以用学生和课程进行演示.一个学生可以选择多个课程,一个课程又对应了多个学生 定义学生类 class Stu{ private String name; private String n ...
- java中的多对多关系解析_Java中多对多映射关系
多对对的映射,可以用学生和课程进行演示.一个学生可以选择多个课程,一个课程又对应了多个学生 定义学生类 class Stu{ private String name; private String n ...
- SpringJpa多对多映射关系
1.菜单表 @Entity @Table(name="t_menus") public class Menus { @Id @GeneratedValue(strategy ...
最新文章
- 检测一个网页上的链接是否都可以正常访问
- 【Android 逆向】Dalvik 函数抽取加壳 ( Dalvik 下的函数指令抽取与恢复 | dex 函数指令恢复时机点 | 类加载流程 : 加载、链接、初始化 )
- Java实现算法导论中最近点对问题分治法
- 2017年软件工程第四次作业-3四则运算
- java接口构建英雄属性_Python接口类的多继承以及抽象类的单继承
- 为什么我不用ViewPager或RecyclerView来做上下滑切换
- Docker Consul 安装及使用服务发现
- pcb成型板aoi检测_通过自动光学检测(AOI)实现PCB高速检测
- php作业制作htm,PHP作业-HTML-2020-09-28
- Eclipse-导入maven项目
- python删除字符串中的字母_从Python中的字符串中删除除字母数字字符之外的所有内容...
- CTRL-Space always toggles Chinese IME (Windows 7、10)
- 软件工程师嵌入式开发交流论坛推荐排行
- EasyGBS通过GB2818下载流程结合抓包数据详细记录
- Supervised pre-trainning有监督预训练
- 程序员健康之——护腰指南
- IDEA打开Maven项目一直indexing或 scanning files to index导致整个idea页面卡住 解决方法
- fiddler抓包指南(浏览器、app抓包及证书安装)
- MyBatis从入门到精通(1):MyBatis入门
- SOA记录何NS记录的区别
热门文章
- 简单神经网络_mnist
- BZOJ 2436 Noi嘉年华(优化DP)
- Hadoop组件之-HDFS(HA实现细节)
- 使用python脚本将XML 电子表格转变为Excel
- Git学习笔记1--Git原理简单介绍
- Oracle序列号详解
- 反序列化时恢复transient字段
- 提示illegal reference to data member'CPMAgentManageDlg::m_matrixMatrixSt'in a static member function
- YAML_12 批量创建用户,分别设置用户组
- C#/VB.NET与西门子PLC进行ModbusTcp通信