數據關聯是ORM的一個重要特征,但往往也是導致系統性能低下的誘因。
1.一對一關聯
一對一關聯有兩種:
1>.主鍵關聯:即兩張表通過主鍵形成一對一的關聯關系。
eg:用戶表和護照表通過一對一主鍵關聯,在hibernate中通過one-to-one節點進行聲明;
user實體類
1
public class TUser implements java.io.Serializable {
2
3
// Fields
4
5
/**
6
*
7
*/
8
private static final long serialVersionUID = -8186441339776871235L;
9
private Integer id;
10
private TPassport TPassport;
11
private String name;
12
private Integer age;
13
private Integer groupid;
14
15
// Constructors
16
17
/** default constructor */
18
public TUser() {
19
}
20
21
/** full constructor */
22
public TUser(TPassport TPassport, String name, Integer age, Integer groupid) {
23
this.TPassport = TPassport;
24
this.name = name;
25
this.age = age;
26
this.groupid = groupid;
27
}
28
29
// Property accessors
30
31
public Integer getId() {
32
return this.id;
33
}
34
35
public void setId(Integer id) {
36
this.id = id;
37
}
38
39
public TPassport getTPassport() {
40
return this.TPassport;
41
}
42
43
public void setTPassport(TPassport TPassport) {
44
this.TPassport = TPassport;
45
}
46
47
public String getName() {
48
return this.name;
49
}
50
51
public void setName(String name) {
52
this.name = name;
53
}
54
55
public Integer getAge() {
56
return this.age;
57
}
58
59
public void setAge(Integer age) {
60
this.age = age;
61
}
62
63
public Integer getGroupid() {
64
return this.groupid;
65
}
66
67
public void setGroupid(Integer groupid) {
68
this.groupid = groupid;
69
}
70
71
}

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

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

user.hbm.xml
1
<hibernate-mapping>
2
<class name="entitys.TUser" table="t_user" catalog="tuser">
3
<id name="id" type="java.lang.Integer">
4
<column name="id" />
5
<generator class="native" />
6
</id>
7
<one-to-one name="TPassport" class="entitys.TPassport" cascade="all" outer-join="true">
8
</one-to-one>
9
<property name="name" type="java.lang.String">
10
<column name="name" length="50" />
11
</property>
12
<property name="age" type="java.lang.Integer">
13
<column name="age" />
14
</property>
15
<property name="groupid" type="java.lang.Integer">
16
<column name="groupid" />
17
</property>
18
</class>
19
</hibernate-mapping

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

passport實體類
1
public class TPassport implements java.io.Serializable {
2
3
// Fields
4
5
/**
6
*
7
*/
8
private static final long serialVersionUID = 5858122126575586075L;
9
private Integer id;
10
private String serial;
11
private Integer expiry;
12
private TUser TUsers;
13
14
// Constructors
15
16
/** default constructor */
17
public TPassport() {
18
}
19
20
/** minimal constructor */
21
public TPassport(String serial, Integer expiry) {
22
this.serial = serial;
23
this.expiry = expiry;
24
}
25
26
/** full constructor */
27
public TPassport(String serial, Integer expiry, TUser TUsers) {
28
this.serial = serial;
29
this.expiry = expiry;
30
this.TUsers = TUsers;
31
}
32
33
// Property accessors
34
35
public Integer getId() {
36
return this.id;
37
}
38
39
public void setId(Integer id) {
40
this.id = id;
41
}
42
43
public String getSerial() {
44
return this.serial;
45
}
46
47
public void setSerial(String serial) {
48
this.serial = serial;
49
}
50
51
public Integer getExpiry() {
52
return this.expiry;
53
}
54
55
public void setExpiry(Integer expiry) {
56
this.expiry = expiry;
57
}
58
59
public TUser getTUsers() {
60
return TUsers;
61
}
62
63
public void setTUsers(TUser users) {
64
TUsers = users;
65
}
66
}

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

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

passport.hbm.xml
2>唯一外鍵關聯:
Hibernate中的唯一外鍵關聯有"many-to-one"節點定義。
eg:用戶與用戶組通過用戶group_id字段與用戶組的id相關聯。
user實體類
1
public class TUser2 implements java.io.Serializable {
2
3
// Fields
4
5
/**
6
*
7
*/
8
private static final long serialVersionUID = 830689105421107608L;
9
private Integer id;
10
private TGroup TGroup;
11
private String name;
12
13
// Constructors
14
15
/** default constructor */
16
public TUser2() {
17
}
18
19
/** full constructor */
20
public TUser2(TGroup TGroup, String name) {
21
this.TGroup = TGroup;
22
this.name = name;
23
}
24
25
// Property accessors
26
27
public Integer getId() {
28
return this.id;
29
}
30
31
public void setId(Integer id) {
32
this.id = id;
33
}
34
35
public TGroup getTGroup() {
36
return this.TGroup;
37
}
38
39
public void setTGroup(TGroup TGroup) {
40
this.TGroup = TGroup;
41
}
42
43
public String getName() {
44
return this.name;
45
}
46
47
public void setName(String name) {
48
this.name = name;
49
}
50
51
}

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

51

group實體類
1
public class TGroup implements java.io.Serializable {
2
3
// Fields
4
5
/**
6
*
7
*/
8
private static final long serialVersionUID = 469145792788411949L;
9
private Integer id;
10
private String name;
11
private TUser2 TUser2s;
12
13
14
// Constructors
15
16
/** default constructor */
17
public TGroup() {
18
}
19
20
/** full constructor */
21
public TGroup(String name,TUser2 TUser2s) {
22
this.name = name;
23
this.TUser2s = TUser2s;
24
}
25
26
// Property accessors
27
28
public Integer getId() {
29
return this.id;
30
}
31
32
public void setId(Integer id) {
33
this.id = id;
34
}
35
36
public String getName() {
37
return this.name;
38
}
39
40
public void setName(String name) {
41
this.name = name;
42
}
43
44
public TUser2 getTUser2s() {
45
return TUser2s;
46
}
47
48
public void setTUser2s(TUser2 user2s) {
49
TUser2s = user2s;
50
}
51
52
53
54
}

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

51

52

53

54

user.hnm.xml
1
<hibernate-mapping>
2
<class name="entitys.TUser2" table="t_user2" catalog="tuser">
3
<id name="id" type="java.lang.Integer">
4
<column name="id" />
5
<generator class="native" />
6
</id>
7
<many-to-one name="TGroup" class="entitys.TGroup" unique="true">
8
<column name="groupid" />
9
</many-to-one>
10
<property name="name" type="java.lang.String">
11
<column name="name" length="50" />
12
</property>
13
</class>
14
</hibernate-mapping>
15

2

3

4

5

6

7

8

9

10

11

12

13

14

15

group.hbm.xml
1
<hibernate-mapping>
2
<class name="entitys.TGroup" table="t_group" catalog="tuser">
3
<id name="id" type="java.lang.Integer">
4
<column name="id" />
5
<generator class="native" />
6
</id>
7
<property name="name" type="java.lang.String">
8
<column name="name" length="50" />
9
</property>
10
<one-to-one name="TUser2s" class="entitys.TUser2" property-ref="TGroup">
11
</one-to-one>
12
</class>
13
</hibernate-mapping>
14

2

3

4

5

6

7

8

9

10

11

12

13

14
