关联关系的配置步骤

①要理清楚管理关系
②确定管理依赖关系的哪一方

1一对一
例如:person 和IdCard

  ①确定依赖关系:一对一

  ②依赖关系由person类管理
代码如下:

person:

@Entity
@Table(name="t_person")
public class Person
{
private int id;
private String name;
private IDCard card; @OneToOne(mappedBy="person")  --->  指定了OneToOne的关联关系,
   @joinColmun(name="idcard")
public IDCard getCard()
{
return card;
}
public void setCard(IDCard card)
{
this.card = card;
}
@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;
} }

IDCard:

@Entity
@Table(name="t_id_card")
public class IDCard
{
private int id;
private String no;
private Person person; @Id
@GeneratedValue
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public String getNo()
{
return no;
}
public void setNo(String no)
{
this.no = no;
}
@OneToOne(mappedBy="idCard")--->  OnetoOne指定了一对一的关联关系,一对一中随便指定一方来维护映射关系,mappedBy同样指定由对方来进行维护关联关系,这里选择Person来进行维护 public Person getPerson() {
return person;
}
publicvoid setPerson(Person person) {
this.person = person;
}
}

2一对多

例如:teacher和student

  ①确定依赖关系:一对多

  ②依赖关系由多方(student)管理

代码:

teacher:

public class Teacher {

    private String name;
private Set<Student> student=new HashSet<Student>(); public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@OneToMany(mappedBy="teacher",fetch=FetchType.LAZY)
public Set<Student> getStudent() {
return student;
}
public void setStudent(Set<Student> student) {
this.student = student;
} }

student:

public class Student{
private String name;
private Teacher teacher;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="teacher")
public Teacher getTeacher() {
return teacher;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
} }

3多对多

例如:classRoom和student

  ①确定依赖关系:多对多

  ②依赖关系由多方(student)管理

classRoom:

public class ClassRoom{

    private String name;
private Set<Student> students=new HashSet<Student>(); public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToMany(mappedBy="calssRooms",fetch=FetchType.LAZY)
public Set<Student> getStudents() {
return students;
}
public void setStudents(Set<Student> students) {
this.students = students;
} }

student:

public class Student{
private String name;
private Set<ClassRoom> classRooms=new HashSet<ClassRoom>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="xx_classRoom_student")
public Set<ClassRoom> getClassRooms() {
return classRooms;
}
public void setClassRooms(Set<ClassRoom> classRooms) {
this.classRooms = classRooms;
} }

hibernate基于注解实现映射关系的配置的更多相关文章

  1. Hibernate基于注解方式配置来实现实体和数据库之间存在某种映射关系

    实体和数据库之间存在某种映射关系,hibernate根据这种映射关系完成数据的存取.在程序中这种映射关系由映射文件(*.hbm.xml)或者java注解(@)定义. 本文以java注解的形式总结映射关 ...

  2. Hibernate中的一对一映射关系

    Hibernate中的一对一映射关系有两种实现方法(单向一对一,和双向一对一)(一对一关系:例如一个department只能有一个manager) 单向和双向有什么区别呢??例如若是单向一对一,比如在 ...

  3. 基于注解的Spring AOP的配置和使用

    摘要: 基于注解的Spring AOP的配置和使用 AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向切面编程.可以通过预编译方式和运行期动态代理实现在不 ...

  4. 基于注解的Spring多数据源配置和使用(非事务)

    原文:基于注解的Spring多数据源配置和使用 1.创建DynamicDataSource类,继承AbstractRoutingDataSource package com.rps.dataSourc ...

  5. Hibernate基于注解的双向one-to-many映射关系的实现

    在项目中用到了一对多的实体类关系映射,之前接触的都是基于配置文件的映射实现.可是公司的大部分都是基于注解的.因此自己參考之前的代码捣鼓了基于注解的一对多的映射关系实现. 背景: 一的一端:QingAo ...

  6. Hibernate基于注解方式的各种映射全面总结

    1. 使用Hibernate Annotation来做对象关系映射 1) 添加必须包: hibernate-jpa-2.0-api-1.0.0.Final.jar 2) 在实体类中添加JPA的标准注解 ...

  7. Hibernate基于注解annotation的配置

    Annotation在框架中是越来越受欢迎了,因为annotation的配置比起XML的配置来说方便了很多,不需要大量的XML来书写,方便简单了很多,只要几个annotation的配置,就可以完成我们 ...

  8. hibernate基于注解的维护权反转:@OneToMany(mappedBy=)

    背景说明:首先是SSH环境下,对象基于注解的方式映射到数据库: 昨天遇到一个比较纠结的问题,@OneToMany(mappedBy="xxx"), mappedBy属性有什么用,然 ...

  9. SSH框架之Hibernate(1)——映射关系

    ORM的实现思想就是将关系数据库中表的数据映射成对象.以对象的形式展现,这样开发者就能够把对数据库的操作转化为对这些对象的操作.Hibernate正是实现了这样的思想,达到了方便开发者以面向对象的思想 ...

随机推荐

  1. css -- 通俗理解inline、block、inline-block

    display:inline; 内联元素,简单来说就是在同一行显示. display:block; 块级元素,简单来说就是就是有换行,会换到第二行. display:inline-block; 就是在 ...

  2. bootstrap -- css -- 图片

    图片样式 .img-rounded:添加 border-radius:6px 来获得图片圆角 .img-circle:添加 border-radius:500px 来让整个图片变成圆形. img-ci ...

  3. AsyncTask执行顺序

    这几天,遇见个奇葩问题,记录一下. 在用AsyncTask的时候,new 出来的AsyncTask总是等了很久才执行到. 于是乎,想到了是不是前面已经有好几个AsyncTask的实例了,是不是线程优先 ...

  4. 格局中@null的代码实现方式

    布局中通常会用到@null.如RadioButton常用的技巧通过RadioGroup实现Tab,需要设置android:button="@null".如果要在代码中动态创建控件, ...

  5. Shell 文本处理工具

    转载自:http://www.cnblogs.com/wish123/p/5540210.html Linux下使用Shell处理文本时最常用的工具: find.grep.xargs.sort.uni ...

  6. Spring------SpringBoot参考书籍

    转载: http://download.csdn.net/download/plus_dy/8972653

  7. python2.0_s12_day10_rabbitMQ使用介绍

    RabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(M ...

  8. django model 数据类型

    转自:http://www.cnblogs.com/lhj588/archive/2012/05/24/2516040.html Django 通过 models 实现数据库的创建.修改.删除等操作, ...

  9. Qt监控Access数据库

    配置文件setup.ini内容 [General] DBFilePath=C:/Users/WangGang/Desktop/Database1.accdb DBUserName= DBPasswor ...

  10. jQuery中如何解决多库冲突问题

    方法一:使用noConflict():舍弃$,$用jQuery代替jQuery.noConflict(); 方法二:自定义变量:舍弃$,新定义一个$y变量来代替$var $y = jQuery.noC ...