文档章节

HIbernate映射关系之一对一(双向)

梁阳波
 梁阳波
发布于 2014/06/10 10:35
字数 305
阅读 330
收藏 2

1:student  学生类 

2:studentLog 学生日志类 

3:studentExtend 学生扩展类

对于普通的业务需求,可能只需要student、studentLog就可以了,但此处模仿多个类来做映射:

@Entity
@Table(name="student")
public class Student implements Serializable {
 private Integer id;
 private String username;
 private StudentLog studentLog;
 private StudentExtend studentExtend;
 
 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 public Integer getId() {
  return id;
 }
 
 /fetch=FetchType.LAZY 设置懒加载
 //cascade={CascadeType.REMOVE} 级联删除(注意不是在Studentlog、studentExtend设置)
 //mappedBy="student"
 @OneToOne(fetch=FetchType.LAZY,cascade={CascadeType.REMOVE},mappedBy="student")
 public StudentExtend getStudentExtend() {
  return studentExtend;
 } 
 @OneToOne(fetch=FetchType.LAZY,cascade={CascadeType.REMOVE},mappedBy="student")
 public StudentLog getStudentLog() {
  return studentLog;
 }
 @Column(name="username",unique=true,nullable=false)
 public String getUsername() {
  return username;
 }
 //tXxx略

 

@Entity
@Table(name="student_log")
public class StudentLog implements Serializable {
 private Integer id;
 private Student student;
 private String message;
 
 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 public Integer getId() {
  return id;
 }
 @Column(name="message",unique=false,nullable=false)
 public String getMessage() {
  return message;
 }
 @OneToOne(fetch=FetchType.LAZY)
 @JoinColumn(name="student_id")
 public Student getStudent() {
  return student;
 }
 //etXxx略
@Entity
@Table(name="student_extend")
public class StudentExtend implements Serializable {
 private Integer id;
 private Student student;
 private String extendMessage;
 
 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 public Integer getId() {
  return id;
 }
 @Column(name="extend_message",unique=false,nullable=false)
 public String getExtendMessage() {
  return extendMessage;
 }
 @OneToOne(fetch=FetchType.LAZY)
 @JoinColumn(name="student_id")
 public Student getStudent() {
  return student;
 }
//tXxx略

 然后直接调用session.delete删除student(主表)记录时,studentLog、studentExtend等从表也会被删除

 studentService.deleteById(1);

© 著作权归作者所有

共有 人打赏支持
梁阳波
粉丝 2
博文 22
码字总数 4705
作品 0
抚州
程序员
Hibernate映射——一对一双向关联映射(六)

我们介绍了一对一的单向关联映射,单向是指只能从人(Person)这端加载身份证端(IdCard),但是反过来,不能从身份证端加载人得信息。如图所示: 关键原因在于对象模型具有方向性: 单向:一...

architect刘源源
01/11
3
0
史上最简单的Hibernate4视频教程(附源码和笔记)

Hibernate4是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合...

2846613430
2016/04/08
1K
0
Hibernate系列——总结篇(九)

概念 Hibernate是一个对象关系映射框架,当然从分层的角度看,我们也说它是数据持久层的框架。 我们从上一句话可以看出Hibernate的核心:面向对象、关系映射以及数据持久化。前面两个概念很容...

architect刘源源
01/11
5
0
Hibernate映射解析——七种映射关系

首先我们了解一个名词ORM,全称是(Object Relational Mapping),即对象关系映射。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现,这样开发人员就可以把对数据库的...

universeye
2014/05/15
0
0
Hibernate框架学习之注解配置关系映射

上篇文章我们通过注解对映射了单个实体类,但是具体项目中往往实体类之间又是相互关联的,本篇文章就是从实体类之间存在的不同关联角度,具体学习下如何映射他们之间的关联,主要涉及内容如下...

Single_YAM
2017/11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

创建第一个react项目

sudo npm i -g create-react-app@1.5.2 create-react-app react-app cd react-apprm -rf package-lock.jsonrm -rf node_modules #主要是为了避免报错npm installnpm start......

lilugirl
今天
1
0
在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN)

Generative Adversarial Network 是深度学习中非常有趣的一种方法。GAN最早源自Ian Goodfellow的这篇论文。LeCun对GAN给出了极高的评价: “There are many interesting recent development...

naughty
今天
0
0
搬瓦工镜像站bwh1.net被DNS污染,国内打不开搬瓦工官网

今天下午(2018年10月17日),继搬瓦工主域名bandwagonhost.com被污染后,这个国内的镜像地址bwh1.net也被墙了。那么目前应该怎么访问搬瓦工官网呢? 消息来源:搬瓦工优惠网->搬瓦工镜像站b...

flyzy2005
今天
3
0
SpringBoot自动配置

本篇介绍下,如何通过springboot的自动配置,将公司项目内的依赖jar,不需要扫描路径,依赖jar的情况下,就能将jar内配置了@configuration注解的类,创建到IOC里面 介绍下开发环境 JDK版本1.8 spr...

贺小五
今天
5
0
命令行新建Maven多项目

参考地址 # DgroupId 可以理解为包名# DartifactId 可以理解为项目名mvn archetype:generate -DgroupId=cn.modfun -DartifactId=scaffold -DarchetypeArtifactId=maven-archetype-quickst......

阿白
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部