您的位置:首页 > 其它

Hibernate映射与注解实例

2011-01-08 22:56 239 查看
XML配置

1、一对一单向

<classname="Person">

<idname="id"column="personId">

<generatorclass="native"/>

</id>

<many-to-onename="address"

column="addressId"

unique="true"

not-null="true"/>

</class>


<classname="Address">

<idname="id"column="addressId">

<generatorclass="native"/>

</id>

</class>

2.、一对一双向

<classname="Person">

<idname="id"column="personId">

<generatorclass="native"/>

</id>

<many-to-onename="address"

column="addressId"

unique="true"

not-null="true"/>

</class>


<classname="Address">

<idname="id"column="addressId">

<generatorclass="native"/>

</id>

<one-to-onename="person"

property-ref="address"/>

</class>

3.、一对多单向

<classname="Person">

<idname="id"column="personId">

<generatorclass="native"/>

</id>

[b]<setname="addresses">[/b]

<keycolumn="personId"

not-null="true"/>

<one-to-manyclass="Address"/>

</set>

</class>


<classname="Address">

<idname="id"column="addressId">

<generatorclass="native"/>

</id>

</class>

4、多对一单向

<classname="Person">

<idname="id"column="personId">

<generatorclass="native"/>

</id>

<many-to-onename="address"

column="addressId"

not-null="true"/>

</class>


<classname="Address">

<idname="id"column="addressId">

<generatorclass="native"/>

</id>

</class>

5、一对多双向

<hibernate-mapping>

<classname="com.bjsxt.hibernate.Group"table="t_group">

<idname="id">

<generatorclass="native"></generator>

</id>

<propertyname="name"></property>

<setname="users"inverse=”true”>

[b]<keycolumn="groupId"></key>//
[/b]与<many-to-one>的column一致

[b]<one-to-manyclass="com.bjsxt.hibernate.User"/>


</set>

[/b]</class>

</hibernate-mapping>

<hibernate-mapping>
<classname="com.bjsxt.hibernate.User"table="t_user">
<idname="id">
<generatorclass="native"></generator>
</id>

<propertyname="name"></property>
<many-to-onename="group"column="groupId"></many-to-one>
</class>
</hibernate-mapping>

6、多对多单向

<hibernate-mapping>
<classname="com.bjsxt.hibernate.Student">
<idname="id">
<generatorclass="native"></generator>
</id>

<propertyname="name"></property>
</class>
</hibernate-mapping>

<hibernate-mapping>
<classname="com.bjsxt.hibernate.Teacher">
<idname="id">
<generatorclass="native"></generator>
</id>
<propertyname="name"></property>
<setname="students"table="t_s">
[b]<keycolumn="teacher_id"></key>

<many-to-manyclass="com.bjsxt.hibernate.Student"column="student_id"/>
</set>
[/b]</class>
</hibernate-mapping>

7、多对多双向

<hibernate-mapping>
<classname="com.bjsxt.hibernate.Student">
<idname="id">
<generatorclass="native"></generator>
</id>

<propertyname="name"></property>
<setname="teachers"table="t_s"inverse=”true”>
<keycolumn="student_id"></key>
<many-to-manyclass="com.bjsxt.hibernate.Teacher"column="teacher_id"/>
</set>

</class>
</hibernate-mapping>

<hibernate-mapping>
<classname="com.bjsxt.hibernate.Teacher">
<idname="id">
<generatorclass="native"></generator>
</id>

<propertyname="name"></property>
<setname="students"table="t_s">
<keycolumn="teacher_id"></key>
<many-to-manyclass="com.bjsxt.hibernate.Student"column="student_id"/>
</set>
</class>
</hibernate-mapping>

--------------------------------------------------------------------------------------------------------

Hibernate实体关系:双向关联,mappedBy必设

注解方式

1、一对一单向

@Entity
publicclassHusband{
@Id
@GenerateValue
pirvateintid;
privateStringname;
@OneToOne
@JoinColumn(name="wifeId")
privateWifewife;
}
@Entity
publicclassWife{
@Id
@GenerateValue
privateintid;
privateStringname;
}
2.、一对一双向

@Entity
publicclassHusband{
@Id
@GenerateValue
pirvateintid;
privateStringname;
@OneToOne
@JoinColumn(name="wifeId")
privateWifewife;
}

@Entity
publicclassWife{
@Id
@GenerateValue
privateintid;
privateStringname;
@OneToOne(mappedBy="wife")
privateHusbandhusband;
}
3.、一对多单向

packagecom.bjsxt.hibernate;
importjava.util.HashSet;
importjava.util.Set;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.Id;
importjavax.persistence.JoinColumn;
importjavax.persistence.OneToMany;
importjavax.persistence.Table;
@Entity
@Table(name="t_group")
publicclassGroup{
privateintid;
privateStringname;
privateSet<User>users=newHashSet<User>();
@Id
@GeneratedValue
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
@OneToMany
@JoinColumn(name="groupId")//
不加出现3张表
publicSet<User>getUsers(){
returnusers;
}
publicvoidsetUsers(Set<User>users){
this.users=users;
}
}

packagecom.bjsxt.hibernate;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.Id;
importjavax.persistence.ManyToOne;
importjavax.persistence.Table;
@Entity
@Table(name="t_user")
publicclassUser{
privateintid;
privateStringname;
@Id
@GeneratedValue
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}

4、多对一单向

packagecom.bjsxt.hibernate;

importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.Id;
importjavax.persistence.Table;

@Entity
@Table(name="t_group")
publicclassGroup{
privateintid;
privateStringname;
@Id
@GeneratedValue
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}

packagecom.bjsxt.hibernate;

importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.Id;
importjavax.persistence.ManyToOne;
importjavax.persistence.Table;

@Entity
@Table(name="t_user")
publicclassUser{
privateintid;
privateStringname;
privateGroupgroup;
@ManyToOne

publicGroupgetGroup(){
returngroup;
}
publicvoidsetGroup(Groupgroup){
this.group=group;
}
@Id
@GeneratedValue
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}

5、一对多双向

packagecom.bjsxt.hibernate;
importjava.util.HashSet;
importjava.util.Set;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.Id;
importjavax.persistence.JoinColumn;
importjavax.persistence.OneToMany;
importjavax.persistence.Table;
@Entity
@Table(name="t_group")
publicclassGroup{
privateintid;
privateStringname;
privateSet<User>users=newHashSet<User>();
@Id
@GeneratedValue
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
@OneToMany(mappedBy="group")

publicSet<User>getUsers(){
returnusers;
}
publicvoidsetUsers(Set<User>users){
this.users=users;
}
}

packagecom.bjsxt.hibernate;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.Id;
importjavax.persistence.ManyToOne;
importjavax.persistence.Table;
@Entity
@Table(name="t_user")
publicclassUser{
privateintid;
privateStringname;
privateGroupgroup;
@ManyToOne
publicGroupgetGroup(){
returngroup;
}
publicvoidsetGroup(Groupgroup){
this.group=group;
}
@Id
@GeneratedValue
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}

6、多对多单向

@Entity
publicclassStudent{
privateintid;
privateStringname;
@Id
@GeneratedValue
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}

@Entity
publicclassTeacher{
privateintid;
privateStringname;
privateSet<Student>students=newHashSet<Student>();
@Id
@GeneratedValue
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
@ManyToMany
@JoinTable(name="t_s",
joinColumns={@JoinColumn(name="teacher_id")},
inverseJoinColumns={@JoinColumn(name="student_id")}
)//
改变中间表的名字和字段名字publicSet<Student>getStudents(){
returnstudents;
}
publicvoidsetStudents(Set<Student>students){
this.students=students;
}
}

7、多对多双向

@Entity
publicclassStudent{
privateintid;
privateStringname;
privateSet<Teacher>teachers=newHashSet<Teacher>();
@ManyToMany(mappedBy="students")
publicSet<Teacher>getTeachers(){
returnteachers;
}
publicvoidsetTeachers(Set<Teacher>teachers){
this.teachers=teachers;
}
@Id
@GeneratedValue
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}

@Entity
publicclassTeacher{
privateintid;
privateStringname;
privateSet<Student>students=newHashSet<Student>();
@Id
@GeneratedValue
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
@ManyToMany
@JoinTable(name="t_s",
joinColumns={@JoinColumn(name="teacher_id")},
inverseJoinColumns={@JoinColumn(name="student_id")}
)
publicSet<Student>getStudents(){
returnstudents;
}
publicvoidsetStudents(Set<Student>students){
this.students=students;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: