(八)Hibernate 映射关系

所有项目导入对应的hibernate的jar包、mysql的jar包和添加每次都需要用到的HibernateUtil.java

第一节:Hibernate 一对一映射关系实现

1,按照主键映射;

2,按照外键映射;

 

1,按照主键映射:

User.java

 1 package com.wishwzp.model;
 2 
 3 public class User {
 4 
 5     private int id;
 6     private String name;
 7     private Address address;
 8     
 9     public int getId() {
10         return id;
11     }
12     public void setId(int id) {
13         this.id = id;
14     }
15     public String getName() {
16         return name;
17     }
18     public void setName(String name) {
19         this.name = name;
20     }
21     public Address getAddress() {
22         return address;
23     }
24     public void setAddress(Address address) {
25         this.address = address;
26     }
27     
28     
29 }

Address.java

 1 package com.wishwzp.model;
 2 
 3 public class Address {
 4 
 5     private int id;
 6     private String address;
 7     private String zipcode;
 8     private User user;
 9     
10     public int getId() {
11         return id;
12     }
13     public void setId(int id) {
14         this.id = id;
15     }
16     public String getAddress() {
17         return address;
18     }
19     public void setAddress(String address) {
20         this.address = address;
21     }
22     public String getZipcode() {
23         return zipcode;
24     }
25     public void setZipcode(String zipcode) {
26         this.zipcode = zipcode;
27     }
28     public User getUser() {
29         return user;
30     }
31     public void setUser(User user) {
32         this.user = user;
33     }
34     
35     
36 }

 

User.hbm.xml

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 
 6 <hibernate-mapping package="com.wishwzp.model">
 7 
 8     <class name="User" table="t_user">
 9         <id name="id" column="userId">
10             <generator class="native"></generator>
11         </id>
12         
13         <property name="name" column="userName"></property>
14         
15         <one-to-one name="address" class="com.wishwzp.model.Address" cascade="all"></one-to-one>
16     </class>
17 
18 </hibernate-mapping>

 

Address.hbm.xml

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 
 6 <hibernate-mapping package="com.wishwzp.model">
 7 
 8     <class name="Address" table="t_address">
 9         <id name="id" column="addressId">
10             <generator class="foreign">
11                 <param name="property">user</param>
12             </generator>
13         </id>
14         
15         <property name="address" column="address"></property>
16         <property name="zipcode" column="zipcode"></property>
17         
18         <one-to-one name="user" class="com.wishwzp.model.User" constrained="true"></one-to-one>
19     </class>
20 
21 </hibernate-mapping>

 

hibernate.cfg.xml

 1 <?xml version='1.0' encoding='utf-8'?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 5 
 6 <hibernate-configuration>
 7 
 8     <session-factory>
 9 
10         <!--数据库连接设置 -->
11         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
12         <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
13         <property name="connection.username">root</property>
14         <property name="connection.password">123456</property>
15 
16        
17         <!-- 方言 -->
18         <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
19     
20         <!-- 控制台显示SQL -->
21         <property name="show_sql">true</property>
22 
23         <!-- 自动更新表结构 -->
24         <property name="hbm2ddl.auto">update</property>
25         
26           <mapping resource="com/wishwzp/model/User.hbm.xml"/>
27           <mapping resource="com/wishwzp/model/Address.hbm.xml"/>
28 
29     </session-factory>
30 
31 </hibernate-configuration>

UserTest.java

 1 package com.wishwzp.service;
 2 
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.junit.After;
 6 import org.junit.Before;
 7 import org.junit.Test;
 8 
 9 import com.wishwzp.model.Address;
10 import com.wishwzp.model.Address2;
11 import com.wishwzp.model.User;
12 import com.wishwzp.model.User2;
13 import com.wishwzp.util.HibernateUtil;
14 
15 public class UserTest {
16 
17     private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
18     private Session session;
19     
20     @Before
21     public void setUp() throws Exception {
22         session=sessionFactory.openSession(); // 生成一个session
23         session.beginTransaction(); // 开启事务
24     }
25 
26     @After
27     public void tearDown() throws Exception {
28          session.getTransaction().commit(); // 提交事务
29          session.close(); // 关闭session
30     }
31 
32     @Test
33     public void testSave1(){
34         
35     }
36     
37 }

UserTest.java

 1 package com.wishwzp.service;
 2 
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.junit.After;
 6 import org.junit.Before;
 7 import org.junit.Test;
 8 
 9 import com.wishwzp.model.Address;
10 import com.wishwzp.model.Address2;
11 import com.wishwzp.model.User;
12 import com.wishwzp.model.User2;
13 import com.wishwzp.util.HibernateUtil;
14 
15 public class UserTest {
16 
17     private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
18     private Session session;
19     
20     @Before
21     public void setUp() throws Exception {
22         session=sessionFactory.openSession(); // 生成一个session
23         session.beginTransaction(); // 开启事务
24     }
25 
26     @After
27     public void tearDown() throws Exception {
28          session.getTransaction().commit(); // 提交事务
29          session.close(); // 关闭session
30     }
31 
32     @Test
33     public void testSave1(){
34         User user=new User();
35         user.setName("张三");
36         
37         Address address=new Address();
38         address.setAddress("某地方");
39         address.setZipcode("43242");
40         address.setUser(user);
41         
42         user.setAddress(address);
43         session.save(user);
44     }
45     
46 }

 

我们发现主键一对一的。。。。

 

2,按照外键映射:

User2.java

 1 package com.wishwzp.model;
 2 
 3 public class User2 {
 4 
 5     private int id;
 6     private String name;
 7     private Address2 address;
 8     
 9     public int getId() {
10         return id;
11     }
12     public void setId(int id) {
13         this.id = id;
14     }
15     public String getName() {
16         return name;
17     }
18     public void setName(String name) {
19         this.name = name;
20     }
21     public Address2 getAddress() {
22         return address;
23     }
24     public void setAddress(Address2 address) {
25         this.address = address;
26     }
27     
28     
29 }

 

Address2.java

 1 package com.wishwzp.model;
 2 
 3 public class Address2 {
 4 
 5     private int id;
 6     private String address;
 7     private String zipcode;
 8     private User2 user;
 9     
10     public int getId() {
11         return id;
12     }
13     public void setId(int id) {
14         this.id = id;
15     }
16     public String getAddress() {
17         return address;
18     }
19     public void setAddress(String address) {
20         this.address = address;
21     }
22     public String getZipcode() {
23         return zipcode;
24     }
25     public void setZipcode(String zipcode) {
26         this.zipcode = zipcode;
27     }
28     public User2 getUser() {
29         return user;
30     }
31     public void setUser(User2 user) {
32         this.user = user;
33     }
34     
35     
36     
37 }

 

User2.hbm.xml

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 
 6 <hibernate-mapping package="com.wishwzp.model">
 7 
 8     <class name="User2" table="t_user2">
 9         <id name="id" column="userId">
10             <generator class="native"></generator>
11         </id>
12         
13         <property name="name" column="userName"></property>
14         
15         <many-to-one name="address" class="com.wishwzp.model.Address2" column="addressId" cascade="all" unique="true"></many-to-one>
16     </class>
17 
18 </hibernate-mapping>

Address2.hbm.xml

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 
 6 <hibernate-mapping package="com.wishwzp.model">
 7 
 8     <class name="Address2" table="t_address2">
 9         <id name="id" column="addressId">
10             <generator class="native">
11             </generator>
12         </id>
13         
14         <property name="address" column="address"></property>
15         <property name="zipcode" column="zipcode"></property>
16         
17         <one-to-one name="user" class="com.wishwzp.model.User2" property-ref="address"></one-to-one>
18     </class>
19 
20 </hibernate-mapping>

 

hibernate.cfg.xml

 1 <?xml version='1.0' encoding='utf-8'?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 5 
 6 <hibernate-configuration>
 7 
 8     <session-factory>
 9 
10         <!--数据库连接设置 -->
11         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
12         <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
13         <property name="connection.username">root</property>
14         <property name="connection.password">123456</property>
15 
16        
17         <!-- 方言 -->
18         <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
19     
20         <!-- 控制台显示SQL -->
21         <property name="show_sql">true</property>
22 
23         <!-- 自动更新表结构 -->
24         <property name="hbm2ddl.auto">update</property>
25 
26           
27           <mapping resource="com/wishwzp/model/User2.hbm.xml"/>
28           <mapping resource="com/wishwzp/model/Address2.hbm.xml"/>
29 
30     </session-factory>
31 
32 </hibernate-configuration>

 

UserTest.java

 1 package com.wishwzp.service;
 2 
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.junit.After;
 6 import org.junit.Before;
 7 import org.junit.Test;
 8 
 9 import com.wishwzp.model.Address;
10 import com.wishwzp.model.Address2;
11 import com.wishwzp.model.User;
12 import com.wishwzp.model.User2;
13 import com.wishwzp.util.HibernateUtil;
14 
15 public class UserTest {
16 
17     private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
18     private Session session;
19     
20     @Before
21     public void setUp() throws Exception {
22         session=sessionFactory.openSession(); // 生成一个session
23         session.beginTransaction(); // 开启事务
24     }
25 
26     @After
27     public void tearDown() throws Exception {
28          session.getTransaction().commit(); // 提交事务
29          session.close(); // 关闭session
30     }
31     
32     @Test
33     public void testSave2(){
34         
35     }
36     
37 }

UserTest.java

 1 package com.wishwzp.service;
 2 
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.junit.After;
 6 import org.junit.Before;
 7 import org.junit.Test;
 8 
 9 import com.wishwzp.model.Address;
10 import com.wishwzp.model.Address2;
11 import com.wishwzp.model.User;
12 import com.wishwzp.model.User2;
13 import com.wishwzp.util.HibernateUtil;
14 
15 public class UserTest {
16 
17     private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
18     private Session session;
19     
20     @Before
21     public void setUp() throws Exception {
22         session=sessionFactory.openSession(); // 生成一个session
23         session.beginTransaction(); // 开启事务
24     }
25 
26     @After
27     public void tearDown() throws Exception {
28          session.getTransaction().commit(); // 提交事务
29          session.close(); // 关闭session
30     }
31     
32     @Test
33     public void testSave2(){
34         User2 user=new User2();
35         user.setName("李四");
36         
37         Address2 address=new Address2();
38         address.setAddress("某地方2");
39         address.setZipcode("432422");
40         address.setUser(user);
41         
42         user.setAddress(address);
43         session.save(user);
44     }
45     
46 }

 

我们发现:t_User2表中的addressId对应着t_address2表中的主键addressId

 

第二节:Hibernate 多对多映射关系实现

1,多对多单向实现;

2,多对多双向实现;

 

1,多对多单向实现:

Course.java

 1 package com.wishwzp.model;
 2 
 3 public class Course {
 4 
 5     private int id;
 6     private String name;
 7     
 8     public int getId() {
 9         return id;
10     }
11     public void setId(int id) {
12         this.id = id;
13     }
14     public String getName() {
15         return name;
16     }
17     public void setName(String name) {
18         this.name = name;
19     }
20     
21     
22 }

 

Student.java

 1 package com.wishwzp.model;
 2 
 3 import java.util.HashSet;
 4 import java.util.Set;
 5 
 6 public class Student {
 7 
 8     private int id;
 9     private String name;
10     private Set<Course> courses=new HashSet<Course>();
11     
12     public int getId() {
13         return id;
14     }
15     public void setId(int id) {
16         this.id = id;
17     }
18     public String getName() {
19         return name;
20     }
21     public void setName(String name) {
22         this.name = name;
23     }
24     public Set<Course> getCourses() {
25         return courses;
26     }
27     public void setCourses(Set<Course> courses) {
28         this.courses = courses;
29     }
30     
31     
32 }

Course.hbm.xml

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 
 6 <hibernate-mapping package="com.wishwzp.model">
 7 
 8     <class name="Course" table="t_course">
 9         <id name="id" column="courseId">
10             <generator class="native"></generator>
11         </id>
12         
13         <property name="name" column="courseName"></property>
14         
15     </class>
16 
17 </hibernate-mapping>

Student.hbm.xml

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 
 6 <hibernate-mapping package="com.wishwzp.model">
 7 
 8     <class name="Student" table="t_student">
 9         <id name="id" column="studentId">
10             <generator class="native"></generator>
11         </id>
12         
13         <property name="name" column="studentName"></property>
14         
15         <set name="courses" table="student_course" cascade="save-update">
16             <key column="student_id"></key>
17             <many-to-many class="com.wishwzp.model.Course" column="course_id"></many-to-many>
18         </set>
19     </class>
20 
21 </hibernate-mapping>

 

hibernate.cfg.xml

 1 <?xml version='1.0' encoding='utf-8'?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 5 
 6 <hibernate-configuration>
 7 
 8     <session-factory>
 9 
10         <!--数据库连接设置 -->
11         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
12         <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
13         <property name="connection.username">root</property>
14         <property name="connection.password">123456</property>
15 
16        
17         <!-- 方言 -->
18         <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
19     
20         <!-- 控制台显示SQL -->
21         <property name="show_sql">true</property>
22 
23         <!-- 自动更新表结构 -->
24         <property name="hbm2ddl.auto">update</property>
25         
26           <mapping resource="com/wishwzp/model/Student.hbm.xml"/>
27           <mapping resource="com/wishwzp/model/Course.hbm.xml"/>
28 
29     </session-factory>
30 
31 </hibernate-configuration>

 

StudentTest.java

 1 package com.wishwzp.service;
 2 
 3 import java.util.Iterator;
 4 import java.util.Set;
 5 
 6 import org.hibernate.Session;
 7 import org.hibernate.SessionFactory;
 8 import org.junit.After;
 9 import org.junit.Before;
10 import org.junit.Test;
11 
12 import com.wishwzp.model.Course;
13 import com.wishwzp.model.Course2;
14 import com.wishwzp.model.Student;
15 import com.wishwzp.model.Student2;
16 import com.wishwzp.util.HibernateUtil;
17 
18 public class StudentTest {
19 
20     private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
21     private Session session;
22     
23     @Before
24     public void setUp() throws Exception {
25         session=sessionFactory.openSession(); // 生成一个session
26         session.beginTransaction(); // 开启事务
27     }
28 
29     @After
30     public void tearDown() throws Exception {
31          session.getTransaction().commit(); // 提交事务
32          session.close(); // 关闭session
33     }
34 
35     @Test
36     public void testSave1(){
37         
38         
39     }
40     
41     
42 }

StudentTest.java

 1 package com.wishwzp.service;
 2 
 3 import java.util.Iterator;
 4 import java.util.Set;
 5 
 6 import org.hibernate.Session;
 7 import org.hibernate.SessionFactory;
 8 import org.junit.After;
 9 import org.junit.Before;
10 import org.junit.Test;
11 
12 import com.wishwzp.model.Course;
13 import com.wishwzp.model.Course2;
14 import com.wishwzp.model.Student;
15 import com.wishwzp.model.Student2;
16 import com.wishwzp.util.HibernateUtil;
17 
18 public class StudentTest {
19 
20     private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
21     private Session session;
22     
23     @Before
24     public void setUp() throws Exception {
25         session=sessionFactory.openSession(); // 生成一个session
26         session.beginTransaction(); // 开启事务
27     }
28 
29     @After
30     public void tearDown() throws Exception {
31          session.getTransaction().commit(); // 提交事务
32          session.close(); // 关闭session
33     }
34 
35     @Test
36     public void testSave1(){
37         Course course1=new Course();
38         course1.setName("语文");
39         
40         Course course2=new Course();
41         course2.setName("数学");
42         
43         Student student1=new Student();
44         student1.setName("张三");
45         student1.getCourses().add(course1);
46         student1.getCourses().add(course2);
47         
48         Student student2=new Student();
49         student2.setName("李四");
50         student2.getCourses().add(course1);
51         student2.getCourses().add(course2);
52         
53         session.save(student1);
54         session.save(student2);
55     }
56     
57     
58 }

 

我们现在查询一下数据:

StudentTest.java

 1 package com.wishwzp.service;
 2 
 3 import java.util.Iterator;
 4 import java.util.Set;
 5 
 6 import org.hibernate.Session;
 7 import org.hibernate.SessionFactory;
 8 import org.junit.After;
 9 import org.junit.Before;
10 import org.junit.Test;
11 
12 import com.wishwzp.model.Course;
13 import com.wishwzp.model.Course2;
14 import com.wishwzp.model.Student;
15 import com.wishwzp.model.Student2;
16 import com.wishwzp.util.HibernateUtil;
17 
18 public class StudentTest {
19 
20     private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
21     private Session session;
22     
23     @Before
24     public void setUp() throws Exception {
25         session=sessionFactory.openSession(); // 生成一个session
26         session.beginTransaction(); // 开启事务
27     }
28 
29     @After
30     public void tearDown() throws Exception {
31          session.getTransaction().commit(); // 提交事务
32          session.close(); // 关闭session
33     }
34 
35     @Test
36     public void testSave1(){
37         Course course1=new Course();
38         course1.setName("语文");
39         
40         Course course2=new Course();
41         course2.setName("数学");
42         
43         Student student1=new Student();
44         student1.setName("张三");
45         student1.getCourses().add(course1);
46         student1.getCourses().add(course2);
47         
48         Student student2=new Student();
49         student2.setName("李四");
50         student2.getCourses().add(course1);
51         student2.getCourses().add(course2);
52         
53         session.save(student1);
54         session.save(student2);
55     }
56     
57     @Test
58     public void testLoad1(){
59         Student student=(Student)session.get(Student.class, 1);
60         Set<Course> courses=(Set<Course>)student.getCourses();
61         Iterator it=courses.iterator();
62         while(it.hasNext()){
63             Course c=(Course)it.next();
64             System.out.println(c.getName());
65         }
66     }
67     
68     
69     
70 }

 

 我们这里是单向的,只能从学生这端去查找课程,无法从课程这端查找学生的,这就是单向的。

 

 

 

2,多对多双向实现:

 Course2.java

 1 package com.wishwzp.model;
 2 
 3 import java.util.HashSet;
 4 import java.util.Set;
 5 
 6 public class Course2 {
 7 
 8     private int id;
 9     private String name;
10     private Set<Student2> students=new HashSet<Student2>();
11     
12     public int getId() {
13         return id;
14     }
15     public void setId(int id) {
16         this.id = id;
17     }
18     public String getName() {
19         return name;
20     }
21     public void setName(String name) {
22         this.name = name;
23     }
24     public Set<Student2> getStudents() {
25         return students;
26     }
27     public void setStudents(Set<Student2> students) {
28         this.students = students;
29     }
30     
31     
32     
33     
34 }

Student2.java

 1 package com.wishwzp.model;
 2 
 3 import java.util.HashSet;
 4 import java.util.Set;
 5 
 6 public class Student2 {
 7 
 8     private int id;
 9     private String name;
10     private Set<Course2> courses=new HashSet<Course2>();
11     
12     public int getId() {
13         return id;
14     }
15     public void setId(int id) {
16         this.id = id;
17     }
18     public String getName() {
19         return name;
20     }
21     public void setName(String name) {
22         this.name = name;
23     }
24     public Set<Course2> getCourses() {
25         return courses;
26     }
27     public void setCourses(Set<Course2> courses) {
28         this.courses = courses;
29     }
30     
31     
32     
33     
34 }

Course2.hbm.xml

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 
 6 <hibernate-mapping package="com.wishwzp.model">
 7 
 8     <class name="Course2" table="t_course2">
 9         <id name="id" column="courseId">
10             <generator class="native"></generator>
11         </id>
12         
13         <property name="name" column="courseName"></property>
14         
15         <set name="students" table="student_course2" inverse="true" >
16             <key column="course_id"></key>
17             <many-to-many class="com.wishwzp.model.Student2" column="student_id"></many-to-many>
18         </set>
19         
20     </class>
21 
22 </hibernate-mapping>

Student2.hbm.xml

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 
 6 <hibernate-mapping package="com.wishwzp.model">
 7 
 8     <class name="Student2" table="t_student2">
 9         <id name="id" column="studentId">
10             <generator class="native"></generator>
11         </id>
12         
13         <property name="name" column="studentName"></property>
14         
15         <set name="courses" table="student_course2" cascade="save-update">
16             <key column="student_id"></key>
17             <many-to-many class="com.wishwzp.model.Course2" column="course_id"></many-to-many>
18         </set>
19     </class>
20 
21 </hibernate-mapping>

 

hibernate.cfg.xml

 1 <?xml version='1.0' encoding='utf-8'?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 5 
 6 <hibernate-configuration>
 7 
 8     <session-factory>
 9 
10         <!--数据库连接设置 -->
11         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
12         <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
13         <property name="connection.username">root</property>
14         <property name="connection.password">123456</property>
15 
16        
17         <!-- 方言 -->
18         <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
19     
20         <!-- 控制台显示SQL -->
21         <property name="show_sql">true</property>
22 
23         <!-- 自动更新表结构 -->
24         <property name="hbm2ddl.auto">update</property>
25 
26         <mapping resource="com/wishwzp/model/Student2.hbm.xml"/>
27           <mapping resource="com/wishwzp/model/Course2.hbm.xml"/>
28 
29     </session-factory>
30 
31 </hibernate-configuration>

 

StudentTest.java

 1 package com.wishwzp.service;
 2 
 3 import java.util.Iterator;
 4 import java.util.Set;
 5 
 6 import org.hibernate.Session;
 7 import org.hibernate.SessionFactory;
 8 import org.junit.After;
 9 import org.junit.Before;
10 import org.junit.Test;
11 
12 import com.wishwzp.model.Course;
13 import com.wishwzp.model.Course2;
14 import com.wishwzp.model.Student;
15 import com.wishwzp.model.Student2;
16 import com.wishwzp.util.HibernateUtil;
17 
18 public class StudentTest {
19 
20     private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
21     private Session session;
22     
23     @Before
24     public void setUp() throws Exception {
25         session=sessionFactory.openSession(); // 生成一个session
26         session.beginTransaction(); // 开启事务
27     }
28 
29     @After
30     public void tearDown() throws Exception {
31          session.getTransaction().commit(); // 提交事务
32          session.close(); // 关闭session
33     }
34 
35     
36     @Test
37     public void testSave2(){
38         
39     }
40     
41     
42 }

 StudentTest.java

 1 package com.wishwzp.service;
 2 
 3 import java.util.Iterator;
 4 import java.util.Set;
 5 
 6 import org.hibernate.Session;
 7 import org.hibernate.SessionFactory;
 8 import org.junit.After;
 9 import org.junit.Before;
10 import org.junit.Test;
11 
12 import com.wishwzp.model.Course;
13 import com.wishwzp.model.Course2;
14 import com.wishwzp.model.Student;
15 import com.wishwzp.model.Student2;
16 import com.wishwzp.util.HibernateUtil;
17 
18 public class StudentTest {
19 
20     private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
21     private Session session;
22     
23     @Before
24     public void setUp() throws Exception {
25         session=sessionFactory.openSession(); // 生成一个session
26         session.beginTransaction(); // 开启事务
27     }
28 
29     @After
30     public void tearDown() throws Exception {
31          session.getTransaction().commit(); // 提交事务
32          session.close(); // 关闭session
33     }
34 
35     
36     @Test
37     public void testSave2(){
38         Course2 course1=new Course2();
39         course1.setName("语文");
40         
41         Course2 course2=new Course2();
42         course2.setName("数学");
43         
44         Student2 student1=new Student2();
45         student1.setName("张三");
46         student1.getCourses().add(course1);
47         student1.getCourses().add(course2);
48         
49         Student2 student2=new Student2();
50         student2.setName("李四");
51         student2.getCourses().add(course1);
52         student2.getCourses().add(course2);
53         
54         session.save(student1);
55         session.save(student2);
56     }
57     
58     
59 }

 

我们现在查询一下数据:

StudentTest.java

 1 package com.wishwzp.service;
 2 
 3 import java.util.Iterator;
 4 import java.util.Set;
 5 
 6 import org.hibernate.Session;
 7 import org.hibernate.SessionFactory;
 8 import org.junit.After;
 9 import org.junit.Before;
10 import org.junit.Test;
11 
12 import com.wishwzp.model.Course;
13 import com.wishwzp.model.Course2;
14 import com.wishwzp.model.Student;
15 import com.wishwzp.model.Student2;
16 import com.wishwzp.util.HibernateUtil;
17 
18 public class StudentTest {
19 
20     private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
21     private Session session;
22     
23     @Before
24     public void setUp() throws Exception {
25         session=sessionFactory.openSession(); // 生成一个session
26         session.beginTransaction(); // 开启事务
27     }
28 
29     @After
30     public void tearDown() throws Exception {
31          session.getTransaction().commit(); // 提交事务
32          session.close(); // 关闭session
33     }
34 
35     
36     @Test
37     public void testSave2(){
38         Course2 course1=new Course2();
39         course1.setName("语文");
40         
41         Course2 course2=new Course2();
42         course2.setName("数学");
43         
44         Student2 student1=new Student2();
45         student1.setName("张三");
46         student1.getCourses().add(course1);
47         student1.getCourses().add(course2);
48         
49         Student2 student2=new Student2();
50         student2.setName("李四");
51         student2.getCourses().add(course1);
52         student2.getCourses().add(course2);
53         
54         session.save(student1);
55         session.save(student2);
56     }
57     
58     @Test
59     public void testLoad2(){
60         Course2 course=(Course2)session.get(Course2.class, 1);
61         Set<Student2> students=(Set<Student2>)course.getStudents();
62         Iterator it=students.iterator();
63         while(it.hasNext()){
64             Student2 s=(Student2)it.next();
65             System.out.println(s.getName());
66         }
67         
68     }
69     
70     
71 }

 

 我们这里是双向的,既可以从学生这端去查找课程,又可以从课程这端查找学生的,这就是双向的。

 

posted @ 2016-05-16 23:48  kika  阅读(190)  评论(0编辑  收藏  举报