观察结果:
使用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;