Hibernate――ORMapping(四)

2015-07-24 11:34:32 · 作者: · 浏览: 35
public void setAge(int age) { this.age = age; } } Husband.java中使用@Embedded package com.zgy.hibernate.model; import javax.persistence.Embedded; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinColumns; import javax.persistence.OneToOne; @Entity public class Husband { private int id; private String name; private Wife wife; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Embedded public Wife getWife() { return wife; } public void setWife(Wife wife) { this.wife = wife; } }

观察结果:

使用show create table husband;

CREATE TABLE `husband` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(255) DEFAULT NULL,

`age` int(11) NOT NULL,

`wifeName` varchar(255) DEFAULT NULL,

PRIMARY KEY (`id`)

)

?

?

二、xml配置
































?

第七种:多对一和一对多

A、多对一单向关联

例如:一个人可以有多个梦想

可以有如下设计

1、person表

2、dream表

错误的做法:

I、错误的做法:在一方加冗余

person表

personid

personname

dream

1

zhangsan

1

1

zhangsan

2

?

dream表

dreamid

dreamdesc

1

Make money

2

Eat a lot

?

正确的做法:

数据表设计:在多方加外键

?

一、Annotation配置

小实验1:

1.设计一个Group.java类,此类包含id、name属性

2.设计一个User.java类,此类包含id、name、group属性

3.对应关系:一个用于属于一个组,一个组含有多个用户,user对group的关系就是many-to-one单项映射关系

4.Group.java

package com.zgy.hibernate.model;



import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.Table;

@Entity

@Table(name="t_group")

public class Group {

private int id;

private String name;



@Id

@GeneratedValue

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}





}

5.User.java

package com.zgy.hibernate.model;



import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;

import javax.persistence.Table;

@Entity

@Table(name="t_user")

public class User {

private int id;

private String name;



private Group group;

@Id

@GeneratedValue

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}



public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}



@ManyToOne

@JoinColumn(name="groupId")

public Group getGroup() {

return group;

}

public void setGroup(Group group) {

this.group = group;

}

}

6.Junit测试

package com.zgy.hibernate.model;



import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.AnnotationConfiguration;