图示:
创建 Teacher 实体类和它的映射文件Teacher.hbm.xml
package entity; public class Teacher { private int id; // 编号 private String name;// 姓名 /* * 构造方法 */ public Teacher() { } public Teacher(String name) { this.name = name; } /* * 封装方法 */ public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
<?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> <class name="entity.Teacher" > <id name="id" type="java.lang.Integer"> <generator class="sequence"> <param name="sequence">seq_teacher</param> </generator> </id> <property name="name" type="java.lang.String"> <column name="name"></column> </property> </class> </hibernate-mapping>
创建 Student 实体类和它的映射文件Student.hbm.xml
package entity; public class Student { private int id; // 编号 private String name;// 姓名 private Teacher teacher;// 用来作约束的 /* * 构造方法 */ public Student() { } public Student(String name) { this.name = name; } /* * 封装方法 */ public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Teacher getTeacher() { return teacher; } public void setTeacher(Teacher teacher) { this.teacher = teacher; } }
<?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> <class name="entity.Student" > <id name="id" type="java.lang.Integer"> <generator class="sequence"> <param name="sequence">seq_student</param> </generator> </id> <property name="name" type="java.lang.String"> <column name="name"></column> </property> <many-to-one name="teacher" column="tid" class="entity.Teacher"></many-to-one> </class> </hibernate-mapping>
配置 hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 数据库URL --> <property name="connection.url"> jdbc:oracle:thin:@localhost:1521:oracle11 </property> <!-- 数据库用户 --> <property name="connection.username">A_hr</property> <!-- 数据库用户密码 --> <property name="connection.password">123456</property> <!-- 数据库 JDBC 驱动 --> <property name="connection.driver_class"> oracle.jdbc.driver.OracleDriver </property> <!-- 是否将运行期生成的 SQL 输出到日志以供调试 --> <property name="show_sql">true</property> <!-- 每个数据库都有其对应的 Dialect 以匹配其平台特征 --> <property name="dialect"> org.hibernate.dialect.Oracle10gDialect </property> <property name="hbm2ddl.auto">create</property> <mapping resource="entity/Student.hbm.xml" /> <mapping resource="entity/Teacher.hbm.xml" /> </session-factory> </hibernate-configuration>
package test; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import entity.Student; import entity.Teacher; public class MaryToOneTest { public static void main(String[] args) { maryToOne(); } private static void maryToOne() { // 构造配置对象,并且读取配置 Configuration cfg = new Configuration().configure(); // SessionFactory = 管理连接工厂 SessionFactory sf = cfg.buildSessionFactory(); // Session连接 Session session = sf.openSession(); // 增删改用事务 Transaction tx = null; Teacher teacher =new Teacher("李老师"); Student student1 = new Student("A学生"); Student student2 = new Student("B学生"); student1.setTeacher(teacher);//对象模型,建立两个对象的关联 student2.setTeacher(teacher);//对象模型,建立两个对象的关联 try { tx=session.beginTransaction(); session.save(teacher); session.save(student1); session.save(student2); tx.commit(); System.out.println("保存成功!!!"); } catch (HibernateException e) { e.printStackTrace(); tx.rollback(); }finally{ session.close(); sf.close(); } } }
控制台的效果图:
数据库里面的效果图:
相关推荐
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...
在本主题中,我们将深入探讨如何利用Hibernate实现一对一(One-to-One)单向关联关系,并通过源码分析来理解其工作原理。 **一对一关联关系**在数据库设计中表示两个表之间存在唯一的对应关系,例如,一个人可能...
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系模型,它用于处理两个实体类之间存在多个对应关系的情况。这篇博客"hibernate多对多关联映射(单项关联)"深入探讨了如何在Hibernate中实现这种映射...
标题“Hibernate ORM - 一对多双向关联关系”指的是在数据库建模中,Hibernate ORM(对象关系映射)框架如何处理一个实体类(如User)与多个实体类(如Article)之间的关系。在这种关系中,一个用户可以拥有多个文章...
在Hibernate中,通常使用`@OneToOne`注解来定义一对一关系,而双向关联则意味着两个实体类都将拥有指向对方的引用。 1. **实体类定义**: 在一对一双向关联中,我们会有两个实体类,例如`User`和`Profile`。`User`...
// 使用@OneToOne和@JoinColumn注解声明与Person的一对一关系,并定义外键列名 @OneToOne @JoinColumn(name = "person_id") // 这里的"person_id"应与数据库中实际的外键列名一致 private Person person; // ...
包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。
“Hibernate 一对一,一对多,多对多例子” 指的是使用Hibernate框架实现数据库中不同关联关系的示例。Hibernate是一个Java持久化框架,它提供了对象关系映射(ORM)功能,使得开发人员可以方便地在Java对象和关系...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联查询是一种常见的关系映射方式,用于表示两个实体之间一对一的依赖关系。这种关联通常在数据库中通过外键或者主键来实现。本文将深入探讨基于外键的一对一...
这里,`@OneToOne`注解表明了与`Person`类的一对一关系,`mappedBy = "profile"`表示`Person`类中有一个属性`profile`引用了`Profile`对象。 接下来,在`Person`类中,我们不需要显式地定义对`Profile`的引用,因为...
多对多关联是数据库设计中的一种常见关系类型,指的是两个实体之间可以存在多个对应关系。例如,在学生与课程的关系中,一个学生可以选修多门课程,而一门课程也可以被多个学生选修。在Hibernate中,这种关系通过`@...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是一种常见的关系数据库模型映射方式。这种关联通常发生在两个实体之间,且每个实体都只有一个对应的实例。本篇文章将详细探讨双向一对一主键关联映射...
"hibernate基于主外键的一对多/多对一关联"是Hibernate中两个核心的概念,用于描述实体之间的关系。下面将详细阐述这两个关联类型及其实现方式。 一对多关联是指在数据库中,一个表的记录可以与另一个表中的多个...
在数据库设计中,这种关系通常通过主键和外键的方式实现,其中一方的主键作为另一方的外键,确保了两表间的一对一关系。 二、唯一外键关联映射 在Hibernate中,一对一关联可以通过配置XML映射文件或使用注解来实现...
本文将深入探讨Hibernate ORM中的一个关键概念——多对多双向连接表关联关系。这种关联关系在实际业务场景中非常常见,比如用户与角色、课程与学生等例子,都需要用到多对多的关系来描述它们之间的复杂联系。 首先...
一对一关系中,User有一个IdCard属性,而IdCard也有一个User属性。 ```java @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; // 一对一关联,IdCard...
本例子主要关注的是Hibernate中的多对多映射,这是一个复杂但常见的关系类型,适用于表示两个实体之间没有主次之分的关系。 在数据库设计中,多对多关系意味着一个表的记录可以对应另一个表中的多个记录,反之亦然...