diff --git a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytomany/bidirection/Many2ManyBiTest.java b/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytomany/bidirection/Many2ManyBiTest.java
index f009a83..e0b8557 100644
--- a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytomany/bidirection/Many2ManyBiTest.java
+++ b/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytomany/bidirection/Many2ManyBiTest.java
@@ -1,5 +1,10 @@
 package com.supwisdom.tutorial.hibernate.manytomany.bidirection;
 
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+
+import com.supwisdom.tutorial.hibernate.util.HibernateUtil;
+
 /**
  * 一个学生有多个老师，一个老师又有多个学生，他们之间互相感知，因此是双向多对多关系
  * @author qianjia
@@ -7,4 +12,75 @@
  */
 public class Many2ManyBiTest {
 
+  public static void main(String[] args) {
+    SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
+    try {
+      /**
+       * 新建老师和学生
+       */
+      Session session = sessionFactory.openSession();
+      session.beginTransaction();
+      {
+        /**
+         * TODO 留给你的作业
+         */
+        showDatas(session);
+      }
+      session.getTransaction().commit();
+      session.close();
+
+      /**
+       * 把学生放到老师里
+       */
+      session = sessionFactory.openSession();
+      session.beginTransaction();
+      {
+        /**
+         * TODO 留给你的作业
+         */
+        showDatas(session);
+      }
+      session.getTransaction().commit();
+      session.close();
+      
+      /**
+       * 删除老师
+       */
+      session = sessionFactory.openSession();
+      session.beginTransaction();
+      {
+        /**
+         * TODO 留给你的作业
+         * 需要注意：必须确保没有任何学生引用该老师才行
+         */
+        showDatas(session);
+      }
+      session.getTransaction().commit();
+      session.close();
+
+      /**
+       * 删除学生
+       */
+      session = sessionFactory.openSession();
+      session.beginTransaction();
+      {
+        /**
+         * TODO 留给你的作业
+         * 需要注意：必须确保没有任何老师引用该学生才行
+         */
+        showDatas(session);
+      }
+      session.getTransaction().commit();
+      session.close();
+    } finally {
+      sessionFactory.close();
+    }
+
+  }
+
+  public static void showDatas(Session session) {
+    /**
+     * TODO 留给你的作业，将那个男孩暗恋哪个女孩打印出来
+     */
+  }
 }
diff --git a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytomany/unidirection/Boy.java b/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytomany/unidirection/Boy.java
deleted file mode 100644
index f19fc47..0000000
--- a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytomany/unidirection/Boy.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.supwisdom.tutorial.hibernate.manytomany.unidirection;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-import org.hibernate.annotations.GenericGenerator;
-
-@Entity
-@Table(name="BOYS")
-public class Boy {
-
-  private Long id;
-  private int age;
-  private String firstname;
-  private String lastname;
-
-  public Boy() {
-  }
-
-  @Id
-  @GeneratedValue(generator = "increment")
-  @GenericGenerator(name = "increment", strategy = "increment")
-  public Long getId() {
-    return id;
-  }
-
-  public void setId(Long id) {
-    this.id = id;
-  }
-
-  public int getAge() {
-    return age;
-  }
-
-  public void setAge(int age) {
-    this.age = age;
-  }
-
-  public String getFirstname() {
-    return firstname;
-  }
-
-  public void setFirstname(String firstname) {
-    this.firstname = firstname;
-  }
-
-  public String getLastname() {
-    return lastname;
-  }
-
-  public void setLastname(String lastname) {
-    this.lastname = lastname;
-  }
-
-}
diff --git a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytomany/unidirection/Girl.java b/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytomany/unidirection/Girl.java
deleted file mode 100644
index 23406a0..0000000
--- a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytomany/unidirection/Girl.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package com.supwisdom.tutorial.hibernate.manytomany.unidirection;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.JoinTable;
-import javax.persistence.ManyToMany;
-import javax.persistence.Table;
-
-import org.hibernate.annotations.GenericGenerator;
-
-@Entity
-@Table(name="GIRLS")
-public class Girl {
-
-  private Long id;
-  private int age;
-  private String firstname;
-  private String lastname;
-  private Set<Boy> boyFriends = new HashSet<Boy>();
-
-  public Girl() {
-  }
-
-  @Id
-  @GeneratedValue(generator = "increment")
-  @GenericGenerator(name = "increment", strategy = "increment")
-  public Long getId() {
-    return id;
-  }
-
-  public void setId(Long id) {
-    this.id = id;
-  }
-
-  public int getAge() {
-    return age;
-  }
-
-  public void setAge(int age) {
-    this.age = age;
-  }
-
-  public String getFirstname() {
-    return firstname;
-  }
-
-  public void setFirstname(String firstname) {
-    this.firstname = firstname;
-  }
-
-  public String getLastname() {
-    return lastname;
-  }
-
-  public void setLastname(String lastname) {
-    this.lastname = lastname;
-  }
-
-  @ManyToMany
-  @JoinTable(name="GIRL_BOY_FRIENDS")
-  public Set<Boy> getBoyFriends() {
-    return boyFriends;
-  }
-
-  public void setBoyFriends(Set<Boy> boyFriends) {
-    this.boyFriends = boyFriends;
-  }
-
-
-}
diff --git a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytomany/unidirection/Many2ManyUniTest.java b/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytomany/unidirection/Many2ManyUniTest.java
deleted file mode 100644
index 3e314d9..0000000
--- a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytomany/unidirection/Many2ManyUniTest.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.supwisdom.tutorial.hibernate.manytomany.unidirection;
-
-/**
- * 
- * @author qianjia
- *
- */
-public class Many2ManyUniTest {
-
-}
diff --git a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytoone/Many2OneTest.java b/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytoone/Many2OneTest.java
index 3147114..29db231 100644
--- a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytoone/Many2OneTest.java
+++ b/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytoone/Many2OneTest.java
@@ -1,5 +1,10 @@
 package com.supwisdom.tutorial.hibernate.manytoone;
 
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+
+import com.supwisdom.tutorial.hibernate.util.HibernateUtil;
+
 /**
  * 有若干害羞的男孩暗恋同一个漂亮姑娘，但是姑娘感知不到暗恋者的存在，因此是多对一关系
  * @author qianjia
@@ -7,4 +12,60 @@
  */
 public class Many2OneTest {
 
+  public static void main(String[] args) {
+    SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
+    try {
+      /**
+       * 新建男孩和女孩
+       */
+      Session session = sessionFactory.openSession();
+      session.beginTransaction();
+      {
+        /**
+         * TODO 留给你的作业
+         */
+        showDatas(session);
+      }
+      session.getTransaction().commit();
+      session.close();
+
+      /**
+       * 删除男孩
+       */
+      session = sessionFactory.openSession();
+      session.beginTransaction();
+      {
+        /**
+         * TODO 留给你的作业
+         */
+        showDatas(session);
+      }
+      session.getTransaction().commit();
+      session.close();
+
+      /**
+       * 删除女孩
+       */
+      session = sessionFactory.openSession();
+      session.beginTransaction();
+      {
+        /**
+         * TODO 留给你的作业
+         * 需要注意：必须确保没有任何男孩引用女孩才能够删除女孩
+         */
+        showDatas(session);
+      }
+      session.getTransaction().commit();
+      session.close();
+    } finally {
+      sessionFactory.close();
+    }
+
+  }
+
+  public static void showDatas(Session session) {
+    /**
+     * TODO 留给你的作业，将那个男孩暗恋哪个女孩打印出来
+     */
+  }
 }
diff --git a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytoone/PrettyGirl.java b/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytoone/PrettyGirl.java
index 8b3ffc2..807ff3e 100644
--- a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytoone/PrettyGirl.java
+++ b/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytoone/PrettyGirl.java
@@ -2,4 +2,24 @@
 
 public class PrettyGirl {
 
+  private Long id;
+  
+  private String name;
+
+  public Long getId() {
+    return id;
+  }
+
+  public void setId(Long id) {
+    this.id = id;
+  }
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+  
 }
diff --git a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytoone/ShyBoy.java b/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytoone/ShyBoy.java
index cd02ebf..d6ebd9e 100644
--- a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytoone/ShyBoy.java
+++ b/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/manytoone/ShyBoy.java
@@ -2,4 +2,34 @@
 
 public class ShyBoy {
 
+  private Long id;
+  
+  private String name;
+
+  private PrettyGirl prettyGirl;
+  
+  public Long getId() {
+    return id;
+  }
+
+  public void setId(Long id) {
+    this.id = id;
+  }
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  public PrettyGirl getPrettyGirl() {
+    return prettyGirl;
+  }
+
+  public void setPrettyGirl(PrettyGirl prettyGirl) {
+    this.prettyGirl = prettyGirl;
+  }
+  
 }
