Hibernate映射与注解实例

    技术2022-06-30  56

    XML配置

    1、一对一单向

    <class name="Person">     <id name="id" column="personId">         <generator class="native"/>     </id>    <many-to-one name="address"         column="addressId"         unique="true"         not-null="true"/> </class> <class name="Address">     <id name="id" column="addressId">         <generator class="native"/>     </id> </class>

    2.、一对一双向

    <class name="Person">     <id name="id" column="personId">         <generator class="native"/>     </id>    <many-to-one name="address"         column="addressId"         unique="true"         not-null="true"/> </class> <class name="Address">   <id name="id" column="addressId">         <generator class="native"/>     </id> <one-to-one name="person"         property-ref="address"/> </class>

    3.、一对多单向

    <class name="Person">     <id name="id" column="personId">         <generator class="native"/>     </id>    <set name="addresses">         <key column="personId"             not-null="true"/>      <one-to-many class="Address"/>     </set> </class> <class name="Address">     <id name="id" column="addressId">         <generator class="native"/>    </id> </class>

    4、多对一单向

    <class name="Person">     <id name="id" column="personId">         <generator class="native"/>     </id>     <many-to-one name="address"         column="addressId"         not-null="true"/> </class> <class name="Address">     <id name="id" column="addressId">         <generator class="native"/>     </id> </class>

    5、一对多双向

    <hibernate-mapping> <class name="com.bjsxt.hibernate.Group" table="t_group">    <id name="id">     <generator class="native"></generator>    </id>       <property name="name"></property>   <set name="users" inverse=”true”>     <key column="groupId"></key> //与<many-to-one>的column一致     <one-to-many class="com.bjsxt.hibernate.User"/>    </set>     </class> </hibernate-mapping>

    <hibernate-mapping><class name="com.bjsxt.hibernate.User" table="t_user">   <id name="id">    <generator class="native"></generator>   </id>     <property name="name"></property>  <many-to-one name="group" column="groupId"></many-to-one>    </class></hibernate-mapping>

    6、多对多单向

    <hibernate-mapping><class name="com.bjsxt.hibernate.Student">   <id name="id">    <generator class="native"></generator>   </id>     <property name="name"></property>    </class></hibernate-mapping>

     

    <hibernate-mapping><class name="com.bjsxt.hibernate.Teacher">   <id name="id">    <generator class="native"></generator>   </id>   <property name="name"></property>  <set name="students" table="t_s">    <key column="teacher_id"></key>    <many-to-many class="com.bjsxt.hibernate.Student" column="student_id"/>   </set>    </class></hibernate-mapping>

    7、多对多双向

    <hibernate-mapping><class name="com.bjsxt.hibernate.Student">   <id name="id">    <generator class="native"></generator>   </id>     <property name="name"></property>  <set name="teachers" table="t_s" inverse=”true”>    <key column="student_id"></key>    <many-to-many class="com.bjsxt.hibernate.Teacher" column="teacher_id"/>   </set>    </class></hibernate-mapping>

    <hibernate-mapping><class name="com.bjsxt.hibernate.Teacher">   <id name="id">    <generator class="native"></generator>   </id>     <property name="name"></property>  <set name="students" table="t_s">    <key column="teacher_id"></key>    <many-to-many class="com.bjsxt.hibernate.Student" column="student_id"/>   </set>    </class></hibernate-mapping>

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

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

    注解方式

    1、一对一单向

    @Entity       

    public class Husband{

               @Id

               @GenerateValue

                 pirvate int id;

                 private String name;

                @OneToOne

                @JoinColumn(name="wifeId")

                 private Wife wife;

          }

            @Entity

         public class Wife{

               @Id

               @GenerateValue

             private int id;

             private String name;

        }

    2.、一对一双向

    @Entity       

    public class Husband{

               @Id

               @GenerateValue

                 pirvate int id;

                 private String name;

                @OneToOne

                @JoinColumn(name="wifeId")

                 private Wife wife;

          }

     

            @Entity

         public class Wife{

               @Id

               @GenerateValue

             private int id;

             private String name;

           @OneToOne(mappedBy="wife")

            private Husband husband;

        }

    3.、一对多单向

    package com.bjsxt.hibernate;import java.util.HashSet;import java.util.Set;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToMany;import javax.persistence.Table;@Entity@Table(name="t_group")public class Group {private int id;private String name;private Set<User> users = new HashSet<User>();@Id@GeneratedValuepublic 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;}@OneToMany@JoinColumn(name="groupId") //不加出现3张表public Set<User> getUsers() {   return users;}public void setUsers(Set<User> users) {   this.users = users;}}

    package com.bjsxt.hibernate;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.ManyToOne;import javax.persistence.Table;@Entity@Table(name="t_user")public class User {private int id;private String name;@Id@GeneratedValuepublic 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;}}

    4、多对一单向

    package com.bjsxt.hibernate;

    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@GeneratedValuepublic 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;}}

     

    package com.bjsxt.hibernate;

    import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;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;@ManyToOnepublic Group getGroup() {   return group;}public void setGroup(Group group) {   this.group = group;}@Id@GeneratedValuepublic 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、一对多双向

    package com.bjsxt.hibernate;import java.util.HashSet;import java.util.Set;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToMany;import javax.persistence.Table;@Entity@Table(name="t_group")public class Group {private int id;private String name;private Set<User> users = new HashSet<User>();@Id@GeneratedValuepublic 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;}@OneToMany(mappedBy="group")public Set<User> getUsers() {   return users;}public void setUsers(Set<User> users) {   this.users = users;}}

    package com.bjsxt.hibernate;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;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;@ManyToOnepublic Group getGroup() {   return group;}public void setGroup(Group group) {   this.group = group;}@Id@GeneratedValuepublic 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;}}

    6、多对多单向

    @Entitypublic class Student {private int id;private String name;@Id@GeneratedValuepublic 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;}}

    @Entitypublic class Teacher {private int id;private String name;private Set<Student> students = new HashSet<Student>();@Id@GeneratedValuepublic 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;}@ManyToMany@JoinTable(name="t_s",  joinColumns={@JoinColumn(name="teacher_id")},  inverseJoinColumns={@JoinColumn(name="student_id")}   )     //改变中间表的名字和字段名字public Set<Student> getStudents() {   return students;}public void setStudents(Set<Student> students) {   this.students = students;}}

    7、多对多双向

    @Entitypublic class Student {private int id;private String name;private Set<Teacher> teachers = new HashSet<Teacher>();@ManyToMany(mappedBy="students")public Set<Teacher> getTeachers() {   return teachers;}public void setTeachers(Set<Teacher> teachers) {   this.teachers = teachers;}@Id@GeneratedValuepublic 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;}}

    @Entitypublic class Teacher {private int id;private String name;private Set<Student> students = new HashSet<Student>();@Id@GeneratedValuepublic 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;}@ManyToMany@JoinTable(name="t_s",  joinColumns={@JoinColumn(name="teacher_id")},  inverseJoinColumns={@JoinColumn(name="student_id")}   )public Set<Student> getStudents() {   return students;}public void setStudents(Set<Student> students) {   this.students = students;}}


    最新回复(0)