Rhythmk 学习 Hibernate 08 - Hibernate annotation 关联关系注解

1、一对一 (One to One)
   
共三种情况:
     1.1 主键共享
    1.2
外键共享

1.3
中间表关联

1.1
 code:

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

@Entity

public class article {

    @Id

    @GeneratedValue

   public
Integer getArticleId() {

        return
articleId;

    }

    .....

    @OneToOne(cascade=CascadeType.ALL)

    @PrimaryKeyJoinColumn

        public
articleContent getContent() {

        return
content;

    }

    ......

}

?





1

2

3

4

5

6

7

8

9

10

@Entity

public class articleContent  {

    

    @Id

    @GeneratedValue

    public
Integer getcId() {

        return
cId;

    }

    ....

}

  执行保存 生成两张无外键的独立表

1.2
 code:

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

@Entity

public class article {

    

    @OneToOne(cascade=CascadeType.ALL)

    @JoinColumn(name="cid_fk")

        public
articleContent getContent() {

        return
content;

    }

    

}

@Entity

public
class articleContent  {

    

    @OneToOne(mappedBy="articleContent")

    public
article ArticleEntity;

}

  执行保存,生成两张表,同时article生成一个cid_fk字段 关联 articleContent主键ID

1.3
 code:

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

@Entity

public class article {

    @Id

    @GeneratedValue

   public
Integer getArticleId() {

        return
articleId;

    }

    @OneToOne(cascade=CascadeType.ALL)

    @JoinTable(name="article_content",

          joinColumns=@JoinColumn(name="aid"),

          inverseJoinColumns=@JoinColumn(name="aid_fk"))

        public
articleContent getContent() {

        return
content;

    }

    ......

}

  生成三张表 分别为:article,article_content,articlecontent  其中 article_content
分别生成两个外键具体参考等价建表语句:

?





1

2

3

4

5

6

7

8

CREATE TABLE `article_content` (

  `aid_fk` int(11) DEFAULT
NULL,

  `aid` int(11) NOT
NULL,

  PRIMARY
KEY (`aid`),

  KEY
`FK_7pgn2vn8r1lpswmh5v2ix667s` (`aid_fk`),

  CONSTRAINT
`FK_ebfc4cs1sishg6u8kwpvgqqj9` FOREIGN
KEY (`aid`) REFERENCES
`article` (`articleId`),

  CONSTRAINT
`FK_7pgn2vn8r1lpswmh5v2ix667s` FOREIGN
KEY (`aid_fk`) REFERENCES
`articlecontent` (`cId`)

) ENGINE=InnoDB DEFAULT
CHARSET=utf8;

  

Rhythmk 学习 Hibernate 08 - Hibernate annotation 关联关系注解,布布扣,bubuko.com

时间: 2024-10-15 20:00:38

Rhythmk 学习 Hibernate 08 - Hibernate annotation 关联关系注解的相关文章

Rhythmk 学习 Hibernate 07 - Hibernate annotation 实体注解

参考: http://docs.jboss.org/hibernate/annotations/3.4/reference/zh_cn/html_single/ 1.系统配置: 可以通过使用  mapping的 resource,于class 属性混合配置 <mapping resource="com/rhythmk/model/product.hbm.xml" /> <mapping class="com.rhythmk.model.User"&

Hibernate学习一:Hibernate注解CascadeType

http://zy19982004.iteye.com/blog/1721846 ———————————————————————————————————————————————————————— Hibernate学习一:Hibernate注解CascadeType 博客分类: Hibernate hibernate 一.概念 现有一场景:一个管理员可以管理多个网吧,一个网吧可以被多个管理员管理.从中抽象出一个多对多的例子user-bar. 主控方user:多对多里面里面会有第三张表user_b

Rhythmk 学习 Hibernate 03 - Hibernate 之 延时加载 以及 ID 生成策略

Hibernate 加载数据 有get,跟Load 1.懒加载: 使用session.load(type,id)获取对象,并不读取数据库,只有在使用返回对象值才正真去查询数据库. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @Test    public void  test1()    {        Session session = null;         try {             session = Hiber

Rhythmk 学习 Hibernate 02 - Hibernate 之 瞬时状态 离线状态 持久化状态 三状态

by:rhythmk.cnblogs.com 1.Hibernate 三种状态: 1.1.三种定义(个人理解,不一定准确):  瞬时状态(transient):    不被session接管,且不存在数据库中的对象的状态,类似于新New一个对象  离线状态 (detached):    数据库中存在而不被session接管  持久化状态(persistent): 对象被session管理且数据库中存在此对象 1.2. 状态之间转换关系图 2 .状态转换以及Hibernate数据库执行过程详解:

Rhythmk 学习 Hibernate 04 - Hibernate 辅助工具 之 JBoos Tool

1.安装JBoos Tool Help -> Install new Software 然后添加: http://download.jboss.org/jbosstools/updates/development http://download.jboss.org/jbosstools/updates/stable/ 稍等一刻,选择 Hibernate tool 下一步 ,完成后重启Eclipse即可. 2.项目配置文件生成: 2.1 新建一项目,项目右键生成相关配置 然后如图: 2.2 此处需

Rhythmk 学习 Hibernate 05 - Hibernate 表间关系 [ManyToOne,OneToMany]

1.项目结构: 1.1.场景说明: 一个订单,包含多个产品 1.2.类文件: Order.java ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 package com.rhythmk.model; import java.util.Date; public

Rhythmk 学习 Hibernate 01 - maven 创建Hibernate 项目之 增删改查入门

1.环境: Maven :3.1.1 开发工具:Spring Tool Suite 数据库 : Mysql  5.6 2.项目文件结构 文件代码: 2.1 .pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.ap

Rhythmk 学习 Hibernate 05 - Hibernate 表间关系 [One To One]

1.One To One 单相 背景: 古代一个老婆  只能关联一个老公 husband.java ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 package com.rhythmk.model; public class husband {          public Integer getHusbandId() {         return husbandId;     }     public void setHusba

Hibernate or JPA Annotation中BLOB、CLOB注解写法

BLOB和CLOB都是大字段类型,BLOB是按二进制字节码来存储的.而CLOB是能够直接存储字符串的. 在hibernate or JPA Annotation中.实体BLOB.CLOB类型的注解与普通的实体属性有些不同,详细操作例如以下: BLOB类型,类型声明为byte[]: private byte[] content; 注解: @Lob @Basic(fetch = FetchType.LAZY) @Column(name = "CONTENT", columnDefiniti