Hibernate映射与注解实例
2011-01-08 22:56
239 查看
XML配置
1、一对一单向
2.、一对一双向
3.、一对多单向
4、多对一单向
5、一对多双向
<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;
}
}
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",
)//
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",
)
returnstudents;
}
publicvoidsetStudents(Set<Student>students){
this.students=students;
}
}
相关文章推荐
- Hibernate映射与注解实例总结
- Hibernate主键一对一关联映射实例【xml和注解版本@OneToOne@JoinColumn(name="wifeId")--主键单向】(十二)
- Hibernate实例--注解配置表映射
- Hibernate多对多映射为第三张表manytomany【xml和注解】实例(十七)
- Hibernate映射与注解实例
- hibernate注解以及简单实例
- Hibernate注解关系映射 @One @Many
- hibernate基于注解的联合主键映射
- hibernate annotation注解方式来处理映射关系
- Hibernate -- 注解(Annotation)关系映射
- Hibernate 一对多,多对多映射实例
- 90---Hibernate使用方法-----------使用注解完成Hibernate映射
- 4、Hibernate 实体关系映射(一、单边一对多关系 注解、xml两种方式)
- Hibernate 实体映射 @注解与xml 配置方式比较
- hibernate注解方式实现一对多映射
- hibernate注解实例
- Hibernate基于注解方式的各种映射全面总结
- 2012-01-12 16:01 hibernate注解以及简单实例
- hibernate单向一对多关联映射(one-to-many)XML与注解版
- Hibernate注解映射类型