Hibernate框架进阶(中篇)之多表关系

Hibernate进阶主要分为上中下三篇,本文是中篇,主要讲解Hibernate框架多表关系的实现。我们知道多表关系有一对一、一对多(多对一)多对三种关系。而1对1关系一般合并为一个表处理,所以本文主要讲解1对多和多对多关系的实现。

一、一对多关系

一对多的关系很多,比如人和籍贯就是一对多的关系,下面就用人和籍贯这个实例来展开说明。

1、数据库的实现

 对于一对多关系的建立,我们通常是使用外键(foreign key)来表示。外键列添加在一对多的“多”这一方。这里用person表和province表分别表示人和籍贯,所以这个外键就加入province表中,值就是person表的主键值。

2、实体类的实现

 对应数据库表,实体类分别用Person类和Province类表示。而在实体类中就没有外键这种概念了。

对于Person类是“多对一”,即很多人属于同一个省份。所以怎么在Person类中表示所属的这一个省份呢?使用类Province即可。

反过来对于Province类是“一对多”,即一个省份有很多人。那么怎么表示很多人呢?即很多Person类,所以我们很快想到使用集合来保存Person类,这里我们使用Set集合。(Set集合值不会重复更符合实际的需求)。

所以,最终的类实现如下:

Hibernate框架进阶(中篇)之多表关系

Hibernate框架进阶(中篇)之多表关系

1 package domain; 2 3 public class Person { 4 private Long per_id;//省份证 5 private String name;//姓名 6 private Integer age;//年龄 7 8 //关系 9 private Province province;//所属省份 10 11 public Long getPer_id() { 12 return per_id; 13 } 14 15 public void setPer_id(Long per_id) { 16 this.per_id = per_id; 17 } 18 19 public String getName() { 20 return name; 21 } 22 23 public void setName(String name) { 24 this.name = name; 25 } 26 27 public Integer getAge() { 28 return age; 29 } 30 31 public void setAge(Integer age) { 32 this.age = age; 33 } 34 35 public Province getProvince() { 36 return province; 37 } 38 39 public void setProvince(Province province) { 40 this.province = province; 41 } 42 43 @Override 44 public String toString() { 45 return "Person [per_id=" + per_id + ",, age=" + age + ", province=" + province + "]"; 46 } 47 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdpjj.html