`

Hibernate实体映射关系配置

 
阅读更多

Hibernate实体关系:双向关联,mappedBy必设

注解方式

1、一对一单向

@Entity       

public class Husband{

           @Id

           @GenerateValue

             pirvate int id;

             private String name;

            @OneToOne

            @JoinColumn(name="wifeId")

             private Wife wife;

      }

         @Entity

     public class Wife{

           @Id

           @GenerateValue

         private int id;

         private String name;

    }

2.、一对一双向

@Entity       

public class Husband{

           @Id

           @GenerateValue

             pirvate int id;

             private String name;

            @OneToOne

            @JoinColumn(name="wifeId")

             private Wife wife;

      }

 

         @Entity

     public class Wife{

           @Id

           @GenerateValue

         private int id;

         private String name;

       @OneToOne(mappedBy="wife")

        private Husband husband;

    }

3.、一对多单向

package com.bjsxt.hibernate;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="t_group")
public class Group {
 private int id;
 private String name;
 private Set<User> users = new HashSet<User>();
 @Id
 @GeneratedValue
 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;
 }
 @OneToMany
 @JoinColumn(name="groupId")  //
不加出现3张表
 public Set<User> getUsers() {
  return users;
 }
 public void setUsers(Set<User> users) {
  this.users = users;
 }
}

package com.bjsxt.hibernate;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="t_user")
public class User {
 private int id;
 private String name;
 @Id
 @GeneratedValue
 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;
 }
}

4、多对一单向

package com.bjsxt.hibernate;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="t_group")
public class Group {
 private int id;
 private String name;
 @Id
 @GeneratedValue
 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;
 }
}

 

package com.bjsxt.hibernate;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="t_user")
public class User {
 private int id;
 private String name;
 private Group group;
 @ManyToOne
 
 public Group getGroup() {
  return group;
 }
 public void setGroup(Group group) {
  this.group = group;
 }
 @Id
 @GeneratedValue
 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;
 }
}

5、一对多双向

package com.bjsxt.hibernate;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="t_group")
public class Group {
 private int id;
 private String name;
 private Set<User> users = new HashSet<User>();
 @Id
 @GeneratedValue
 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;
 }
 @OneToMany(mappedBy="group")
 
 public Set<User> getUsers() {
  return users;
 }
 public void setUsers(Set<User> users) {
  this.users = users;
 }
}

package com.bjsxt.hibernate;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="t_user")
public class User {
 private int id;
 private String name;
 private Group group;
 @ManyToOne
 public Group getGroup() {
  return group;
 }
 public void setGroup(Group group) {
  this.group = group;
 }
 @Id
 @GeneratedValue
 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;
 }
}

6、多对多单向

@Entity
public class Student {
 private int id;
 private String name;
 @Id
 @GeneratedValue
 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;
 }
}

@Entity
public class Teacher {
 private int id;
 private String name;
 private Set<Student> students = new HashSet<Student>();
 @Id
 @GeneratedValue
 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;
 }
 @ManyToMany
 @JoinTable(name="t_s",
  
joinColumns={@JoinColumn(name="teacher_id")},
  
inverseJoinColumns={@JoinColumn(name="student_id")}
  )    //
改变中间表的名字和字段名字
 public Set<Student> getStudents() {
  return students;
 }
 public void setStudents(Set<Student> students) {
  this.students = students;
 }
}

7、多对多双向

@Entity
public class Student {
 private int id;
 private String name;
 private Set<Teacher> teachers = new HashSet<Teacher>();
 @ManyToMany(mappedBy="students")
 public Set<Teacher> getTeachers() {
  return teachers;
 }
 public void setTeachers(Set<Teacher> teachers) {
  this.teachers = teachers;
 }
 @Id
 @GeneratedValue
 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;
 }
}

@Entity
public class Teacher {
 private int id;
 private String name;
 private Set<Student> students = new HashSet<Student>();
 @Id
 @GeneratedValue
 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;
 }
 @ManyToMany
 @JoinTable(name="t_s",
  
joinColumns={@JoinColumn(name="teacher_id")},
  
inverseJoinColumns={@JoinColumn(name="student_id")}
  )
 public Set<Student> getStudents() {
  return students;
 }
 public void setStudents(Set<Student> students) {
  this.students = students;
 }
}

XML配置

1、一对一单向

<class name="Person">
    <id name="id" column="personId">
        <generator class="native"/>
    </id>
    <many-to-one name="address" 
        column="addressId" 
        unique="true"
        not-null="true"/>
</class>
 
<class name="Address">
    <id name="id" column="addressId">
        <generator class="native"/>
    </id>
</class>

2.、一对一双向

<class name="Person">
    <id name="id" column="personId">
        <generator class="native"/>
    </id>
    <many-to-one name="address" 
        column="addressId" 
        unique="true"
        not-null="true"/>
</class>
 
<class name="Address">
    <id name="id" column="addressId">
        <generator class="native"/>
    </id>
   <one-to-one name="person" 
        property-ref="address"/>
</class>

3.、一对多单向

<class name="Person">
    <id name="id" column="personId">
        <generator class="native"/>
    </id>
    <set name="addresses">
        <key column="personId" 
            not-null="true"/>
     <one-to-many class="Address"/>
    </set>
</class>
 
<class name="Address">
    <id name="id" column="addressId">
        <generator class="native"/>
    </id>
</class>

4、多对一单向

<class name="Person">
    <id name="id" column="personId">
        <generator class="native"/>
    </id>
    <many-to-one name="address" 
        column="addressId"
        not-null="true"/>
</class>
 
<class name="Address">
    <id name="id" column="addressId">
        <generator class="native"/>
    </id>
</class>

5、一对多双向

<hibernate-mapping>

 <class name="com.bjsxt.hibernate.Group" table="t_group">

  <id name="id">

   <generator class="native"></generator>

  </id>

  

  <property name="name"></property>

  <set name="users" inverse=”true”>

   <key column="groupId"></key>  //<many-to-one>column一致

   <one-to-many class="com.bjsxt.hibernate.User"/>

  </set>

    </class>

 

</hibernate-mapping>

<hibernate-mapping>
 <class name="com.bjsxt.hibernate.User" table="t_user">
  <id name="id">
   <generator class="native"></generator>
  </id>
  
  <property name="name"></property>
  <many-to-one name="group" column="groupId"></many-to-one>
    </class>
</hibernate-mapping>

6、多对多单向

<hibernate-mapping>
 <class name="com.bjsxt.hibernate.Student">
  <id name="id">
   <generator class="native"></generator>
  </id>
  
  <property name="name"></property>
    </class>
</hibernate-mapping>

 

<hibernate-mapping>
 <class name="com.bjsxt.hibernate.Teacher">
  <id name="id">
   <generator class="native"></generator>
  </id>
  <property name="name"></property>
  <set name="students" table="t_s">

   <key column="teacher_id"></key>
   <many-to-many class="com.bjsxt.hibernate.Student" column="student_id"/>
  </set>
    </class>
</hibernate-mapping>

7、多对多双向

<hibernate-mapping>
 <class name="com.bjsxt.hibernate.Student">
  <id name="id">
   <generator class="native"></generator>
  </id>
  
  <property name="name"></property>
  
<set name="teachers" table="t_s" inverse=”true”>
   <key column="student_id"></key>
   <many-to-many class="com.bjsxt.hibernate.Teacher" column="teacher_id"/>
  </set>

    </class>
</hibernate-mapping>

<hibernate-mapping>
 <class name="com.bjsxt.hibernate.Teacher">
  <id name="id">
   <generator class="native"></generator>
  </id>
  
  <property name="name"></property>
  
<set name="students" table="t_s">
   <key column="teacher_id"></key>
   <many-to-many class="com.bjsxt.hibernate.Student" column="student_id"/>
  </set>
    </class>
</hibernate-mapping>

 

分享到:
评论

相关推荐

    hibernate实体映射文件字段设置默认值

    hibernate实体映射文件字段设置默认值

    Myeclipse自动生成Hibernate配置文件及实体类映射ORM

    Myeclipse自动生成Hibernate配置文件及实体类映射ORM配置文件--hibernate方式

    根据数据库表生成实体、hibernate配置文件和实体映射文件

    根据数据库表生成实体、hibernate配置文件和实体映射文件

    Hibernate关系映射XML生成工具

    Middlegen-Hibernate-r5 Hibernate关系映射XML生成工具,MYSQL数据库的生成配置文件已经做好。

    Hibernate XML配置表映射实例

    Hibernate XML配置表映射实例

    hibernate的约束文件(核心配置,映射文件)

    此压缩包内有两文件,一个是hibernate的核心配置文件hibernate.cfg.xml,一个是实体映射文件*.hbm.xml,在配置hibernate文件时需要用到头部的约束,还有在配置没提示时需要用到(附带使用方法)。

    hibernate映射的注解配置

    使用hibernate的注解配置可以很好的完成跟实体的映射。而且还可以通过注解配置,可以完成多对一,一对多等关系的配置,非常好。

    Hibernate映射文件配置.mhtml

    初次对于Hibernate映射文件的配置,包括对Hibernate的简介还有Hibernate的优点的介绍,封装一个实体Bean,并且对它进行文件的配置和测试

    Hibernate学习笔记和资料

    hibernate概述,hibernate入门Demo,hibernate配置文件详解(全局配置,实体类映射配置),配置实体规则,核心API详解(Configuration,sessionFactory,session,Transaction),hibernate中的对象状态以及刷新能缓存机制 ...

    Hibernate3.1_学习源码

    配置文件:只配置父类的映射文件,在其中加入joined-subclass将两个子类实体映射关系添加 2) 数据库表:一张表,包括公共字段、特有字段、区分字段 实体层设计:与第一种方法设计一样,设计三个实体类,分父类和...

    hibernate利用配置文件反向生成数据库所有配置文件及方法

    hibernate利用配置文件,实体关系数据库映射文件及数据库配置相关文件) 反向生成数据库所有配置文件, 及其所需的几个文件所有详细代码

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第15章 映射实体关联关系  15.1 映射一对一关联  15.1.1 按照外键映射   15.1.2 按照主键映射  15.2 映射单向多对多关联  15.3 映射双向多对多关联关系  15.3.1 关联两端使用元素  15.3.2 在inverse端使用...

    第1章准备源代码阅读环境与Hibernate的基本配置

    本章除了讲解如何搭建源代码阅读环境,还介绍了Hibernate项目的基本配置、详细的实体映射配置等内容,详细的Hibernate项目配置将在第二章讲解。对于熟识Hibernate开发的读者,可以只看本章小结给出建议内容即可。1.2...

    hibernate 体系结构与配置 参考文档(html)

    5. 对象/关系数据库映射基础(Basic O/R Mapping) 5.1. 映射定义(Mapping declaration) 5.1.1. Doctype 5.1.2. hibernate-mapping 5.1.3. class 5.1.4. id 5.1.4.1. Generator 5.1.4.2. 高/低位算法(Hi/Lo ...

    struts2+spring+hibernate整合示例

    1 首先整合spring和hibernate,这次我们在spring 中配置bean使用注解的方式 ,hibernate实体映射关系也使用注解的方式,配置完毕后用简单方法测试下hibernate是否整合成功。 a 加入支持:添加 spring核心包、...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    Hibernate Annotations 中文文档

    2.2.5. 映射实体Bean的关联关系 2.2.5.1. 一对一(One-to-one) 2.2.5.2. 多对一(Many-to-one) 2.2.5.3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. 关联关系获取 2.2.6. ...

    Hibernate Web应用的开发步骤

    (4)利用Hibernate的第三方工具或Eclipse的有关插件从数据库中创建出相应的实体对象及其ORM映射文件。 (5)创建Hibernate的SessionFactory类。 (6)通过SessionFactory创建Session实例。 (7)通过创建的...

    hibernate annotation 中文文档

    2.2.5. 映射实体Bean的关联关系 2.2.5.1. 一对一(One-to-one) 2.2.5.2. 多对一(Many-to-one) 2.2.5.3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. 关联关系获取 2.2.6. 映射...

Global site tag (gtag.js) - Google Analytics