1、包结构:
2、源代码:
Course.java
package domain;
import java.util.HashSet;
import java.util.Set;
public class Course {
private String id;
private String cid;
private String course;
private Set<Student> students=new HashSet<Student>();
public Course() {
}
public Course(String cid, String course) {
this.cid = cid;
this.course = course;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public String getCourse() {
return course;
}
public void setCourse(String course) {
this.course = course;
}
public Set<Student> getStudents() {
return students;
}
public void setStudents(Set<Student> students) {
this.students = students;
}
}
Student.java:
package domain;
import java.util.HashSet;
import java.util.Set;
public class Student {
private String id;
private String sid;
private String name;
private Set<Course> courses=new HashSet<Course>();
public Student(){};
public Student(String sid,String name){
this.sid=sid;
this.name=name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<Course> getCourses() {
return courses;
}
public void setCourses(Set<Course> courses) {
this.courses = courses;
}
}
HbnUtil.java:
package util;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HbnUtil {
private static SessionFactory sessionFactory;
private HbnUtil(){}
public static synchronized SessionFactory getSessionFactory(){
if(sessionFactory==null){
sessionFactory=new Configuration().configure().buildSessionFactory();
}
return sessionFactory;
}
}
hibernate.cfg.xml:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:myorcl</property>
<property name="connection.username">myorcl</property>
<property name="connection.password">embed</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="myeclipse.connection.profile">myorcl</property>
<!--<property name="hibernate.connection.release_mode">AFTER_TRANSACTION</property>
-->
<property name="show_sql">true</property>
<mapping resource="domain/Student.hbm.xml"/>
<mapping resource="domain/Course.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Course.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="domain">
<class name="Course" table="COURSE">
<id name="id" column="id">
<generator class="uuid"></generator>
</id>
<property name="cid" column="cid"></property>
<property name="course" column="course"></property>
<set name="students" table="SC" inverse="true">
<key column="CFK"></key>
<many-to-many class="Student" column="SFK"></many-to-many>
</set>
</class>
</hibernate-mapping>
Student.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="domain">
<class name="Student" table="STUDENT">
<id name="id" column="ID">
<generator class="uuid"></generator>
</id>
<property name="sid" column="SID"></property>
<property name="name" column="NAME"></property>
<set name="courses" table="SC" cascade="all">
<key column="SFK"></key>
<many-to-many class="Course" column="CFK"></many-to-many>
</set>
</class>
</hibernate-mapping>
Test.java:
package test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import util.HbnUtil;
import domain.Course;
import domain.Student;
public class Test {
public static void main(String[] args){
SessionFactory sf=HbnUtil.getSessionFactory();
Session session=sf.openSession();
session.beginTransaction();
Student s1=new Student("sid4","li");
Course c1=new Course("cid4","C++");
Student s2=new Student("sid5","li");
Course c2=new Course("cid5","C++");
s1.getCourses().add(c1);
s1.getCourses().add(c2);
c2.getStudents().add(s2);
//session.save(s1);
//session.save(c1);
//session.save(c2);
//session.save(s2);
Object obj=session.get(Student.class, "4028e4282e091aa1012e091aa5420001");
session.delete(obj);
session.flush();
session.getTransaction().commit();
session.close();
sf.close();
}
}
以上代码使用中间表SC实现了多对多关系映射,但我还有一个疑问:就是如果中间表SC还想加入一个score(学生分数)字段,该如何处理呢?网上有人说将多对多映射拆成两个一对多映射。大家都是这么做的么?

- 大小: 9 KB
分享到:
相关推荐
本资源“Hibernate基础学习源码”提供了五个不同阶段的学习示例,分别命名为Hibernate_01至Hibernate_04以及Hibernate_M2M,涵盖了Hibernate的基本概念、配置、实体映射、CRUD操作以及多对多关系的处理。 1. **...
hibernate表映射一直记不住,这次总结一下,放便下次使用。。。
在Hibernate中,这些关系可以被映射为一对一(1:1)、一对多(1:n)和多对多(m:n)的关联。 **ORM(对象关系映射)原理:** ORM技术的核心是将Java对象与数据库表之间的映射关系进行定义,这样开发者就可以通过...
《精通Hibernate》学习-对象关系映射基础 Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了一种方便地将数据库操作转换为面向对象的方式。在这个压缩包中,我们很可能会找到关于Hibernate基础...
### Hibernate映射主键生成策略native #### 一、引言 在ORM(对象关系映射)技术中,Hibernate作为一款流行的Java持久层框架,在处理数据持久化方面提供了丰富的功能和灵活性。其中,主键生成策略是Hibernate配置...
【一、O/R Mapping】 O/R Mapping,即对象关系映射,是将对象模型与关系数据库之间进行映射的技术。在Hibernate中,O/R Mapping允许开发者以面向对象的方式...学习和掌握Hibernate有助于提升Java应用的数据管理能力。
本书是 Hibernate 相关技术领域的重要参考资料之一,对于想要深入了解 Hibernate 并在实际项目中应用该技术的开发者来说非常有价值。 #### 三、Hibernate 概述 Hibernate 是一个开放源代码的对象关系映射(ORM)...
Hibernate支持1:1、1:n、n:m等多种关联映射关系,可以有效地管理复杂的数据关系。 在Hibernate框架中,ORM模型简化了数据库查询的过程,开发者可以利用ORM框架提供的查询接口,以对象的方式操作数据,而无需深入...
- **生成DAO类**:利用MyEclipse的Hibernate Reverse Engineering功能自动生成DAO类和映射文件。 ##### 3. 日志配置 - **log4j.properties**:为了方便管理和记录日志,需要配置log4j.properties文件,放置在项目...
此外,还包括1:1、1:n、n:m的关系映射,以及类表继承等复杂情况。 **二、Hibernate入门** Hibernate是一个优秀的ORM框架,具有开源、成熟、流行的特点,广泛应用于企业级开发。其优势在于提供自定义API,且被JBoss...
这一过程涉及了对象(O)、关系型数据库表(R)以及映射(M)三个关键组成部分。 ### 持久化过程详解 在Java中实现持久化通常涉及到以下几个步骤: 1. **定义实体类**:如示例中的`Users`类,它包含了多个属性...
- "2018-7-24-Hibernate-配置表关系.pptx"和"06-2018-7-9-Hibernate-对象关系映射文件.pptx"可能分别讲解了如何配置实体间的关联关系和编写ORM映射文件。 - "01-2018-7-7-Hibernate.pptx"可能是Hibernate基础概念和...
Hibernate是Java领域中一款著名的对象关系映射(ORM)框架,它允许开发者使用面向对象的编程方式来操作数据库。在Hibernate 5.2.9版本中,提供了许多增强的功能和优化,适合初学者进行学习和实践。这个压缩包包含的...
【hibernate培训ppt】这份53页的资料主要涵盖了对象/关系映射(O/R Mapping)的概念,以及Hibernate框架的入门、映射声明、对象状态与生命周期、查询及最佳实践等内容。对于有一定Java、SQL和JDBC基础,且熟悉面向...
在本项目"maven项目...这个项目实例为初学者提供了一个学习Maven和Hibernate的实践平台,同时也适用于有一定经验的开发者参考和复用。通过这个demo,你可以深入了解Java Web应用的开发流程和现代ORM框架的使用方法。
映射文件是Hibernate中用来定义实体类和数据库表之间映射关系的文件,通常采用XML格式,扩展名为`.hbm.xml`。这些映射文件对于Hibernate正确地将POJO实例转换为数据库中的记录至关重要。 **映射文件的主要内容包括...
标题中的"hibernate-release-5.3.7.Final"指的是Hibernate ORM框架的一个特定版本,这是Java领域中广泛使用的对象关系映射(ORM)工具。Hibernate允许开发人员使用面向对象的方式来操作数据库,极大地简化了Java应用...
- **学习和使用的难度**:Hibernate的学习曲线相对平缓,一旦掌握基本概念后,使用起来相对简单。 - **代码侵入性**:Hibernate对代码的侵入性较小,可以通过注解或XML配置文件进行数据映射,而无需在业务逻辑中嵌入...