导读

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

一、一对多关系

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

1、数据库的实现

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

2、实体类的实现

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

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

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

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

 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_>;
46     }
47 }
Person

相关文章:

  • 2021-07-17
  • 2021-08-07
  • 2021-12-03
  • 2021-12-25
  • 2021-05-26
  • 2021-07-02
  • 2021-11-05
猜你喜欢
  • 2021-08-15
  • 2022-12-23
  • 2021-12-25
  • 2021-07-24
  • 2021-08-17
  • 2021-04-30
  • 2022-12-23
相关资源
相似解决方案