基于外键的一对多关联映射!一对多,Group(组)对于Person(人),一个组可以有多个人!ok?
Hibernate主要有两种配置方法,一种是Annotations 一种是XML!
下面是Annotations的配置方法!
Group 类:
@Entity
@Table(name="t_group")
public class Group {
private Integer id;
private String name;
private Set<Person> persons=newHashSet<Person>();//set不允许重复,最适合数据库模型
@Id
@GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name="t_name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@OneToMany
//加上@JoinColumn是为了防止Hibernate将一对多当做多对多来处理,产生中间表
@JoinColumn(name="group_id")
public Set<Person> getPersons() {
return persons;
}
publicvoidsetPersons(Set<Person> persons){
this.persons = persons;
}
}
Person 类:
@Entity
@Table(name="t_person")
public class Person {
private Integer id;
private String name;
private Integer age;
@Id
@GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name="t_name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(name="t_age")
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
XML配置一对多的单向关联映射方式版:
public class Person {
private Integer id;
private String name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
public class Group {
private Integer id;
private String name;
private Set<Person> persons=newHashSet<Person>();//set不允许重复,最适合数据库模型
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<Person>getPersons() {
return persons;
}
public void setPersons(Set<Person> persons) {
this.persons = persons;
}
}
Group类的配置文件:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="csg.hibernate.entity"> <class name="Group"table="t_group"> <id name="id"> <column name="id"/> <generator class="native" /> </id> <property name="name" /> <set name="persons"> <key column="group_id"/> <one-to-many class="csg.hibernate.entity.Person"/> </set> </class> </hibernate-mapping>
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="csg.hibernate.entity"> <class name="Person"table="t_person"> <id name="id"> <column name="id"/> <generator class="native" /> </id> <property name="name" /> <property name="age" /> </class> </hibernate-mapping>
Ok,一对多单向关联映射的Annotations和XML配置方法!
本文出自 “诺言永远依恋小柴、、、” 博客,请务必保留此出处http://1936625305.blog.51cto.com/6410597/1568701