package Test; import java.util.List; import java.util.Set; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.Test; import com.tedu.entity.Book; import com.tedu.entity.Student; import com.tedu.entity.Teacher; import com.tedu.entity.User; public class TestCase { private SessionFactory sf ; //测试将临时状态数据保存并转为持久状态数据 @Test public void Test1(){ createSF(); Session session = sf.openSession(); Student s = new Student("刘维丰","16"); s.setName("刘磊"); //开启事务 Transaction t = session.beginTransaction(); System.out.println(s); t.begin(); session.save(s); System.out.println(s); t.commit(); session.close(); } //测试将临时状态数据保存并转为持久状态数据 @Test public void Test2(){ createSF(); Session session = sf.openSession(); Teacher t = new Teacher("薛兆丰"); Transaction transaction = session.beginTransaction(); System.out.println(t); transaction.begin(); session.save(t); transaction.commit(); System.out.println(t); session.close(); } //测试将持久状态数据进行修改 @Test public void Test3(){ createSF(); Session session = sf.openSession(); Transaction transaction = session.beginTransaction(); transaction.begin(); Student s = (Student) session.get(Student.class, 1); System.out.println(s); s.setName("Bill"); System.out.println(s); transaction.commit(); session.close(); } //测试将持久状态数据转为游离状态数据再转为持久状态而且修改 @Test public void Test4(){ createSF(); Session session = sf.openSession(); Transaction transaction = session.beginTransaction(); transaction.begin(); Student s = (Student) session.get(Student.class, 1); System.out.println(s); //将session转换为游离状态 session.evict(s); //解除游离状态 session.update(s); s.setName("Bill"); System.out.println(s); transaction.commit(); session.close(); } //测试将持久状态数据转为游离状态数据再转为临时状态 @Test public void Test5(){ createSF(); Session session = sf.openSession(); Transaction transaction = session.beginTransaction(); transaction.begin(); Student s = (Student) session.get(Student.class, 3); System.out.println(s); //将session转换为游离状态 session.evict(s); //直接将数据转为临时状态(即删除) session.delete(s); s.setName("Bill"); System.out.println(s); transaction.commit(); session.close(); } //测试HQL数据 @Test public void Test6(){ createSF(); Session session = sf.openSession(); String HQL = "from Student where name like '%刘%'"; Query query = session.createQuery(HQL); //用query对象查找数据 List<Student> list = query.list(); for(Student s : list){ System.out.println(s); } session.close(); } //测试多对一和一对多的关系以及懒加载 @Test public void TestOneToMany(){ createSF(); Session session = sf.openSession(); User user = (User) session.get(User.class, 1); System.out.println(user.getId()); System.out.println(user.getName()); Set<Book> book = user.getBook(); System.out.println(book.size()); for (Book b : book){ System.out.println(b); } session.close(); } //建立SessionFactory对象 public void createSF(){ Configuration config = new Configuration(); config.configure("hibernate.cfg.xml"); sf = config.buildSessionFactory(); } }