?
Hibernate核心API(二)
commit()后,teacher是Detached状态,这里删除teacher对象也是可以的
Session session2 = sf.getCurrentSession();
session2.beginTransaction();
session2.delete(teacher);
session2.getTransaction().commit();
}
*/
@Test
public void testLoad() {
Session session = sf.getCurrentSession();
session.beginTransaction();
Teacher t = (Teacher)session.load(Teacher.class, 1);
System.out.println(t.getClass());
session.getTransaction().commit();
//System.out.println(t.getName());
}
@Test
public void testGet() {
Session session = sf.getCurrentSession();
session.beginTransaction();
Teacher t = (Teacher)session.get(Teacher.class, 1);
System.out.println(t.getClass());
session.getTransaction().commit();
//System.out.println(t.getName());
}
@Test
public void testUpdate1() {
Session session = sf.getCurrentSession();
session.beginTransaction();
Teacher t = (Teacher)session.get(Teacher.class, 1);
session.getTransaction().commit();
t.setName("张小三");
Session session2 = sf.getCurrentSession();
session2.beginTransaction();
session2.update(t);
session2.getTransaction().commit();
}
@Test
public void testUpdate2() {
Teacher t = new Teacher();
t.setName("张小三");
t.setId(1);
Session session2 = sf.getCurrentSession();
session2.beginTransaction();
session2.update(t);
session2.getTransaction().commit();
}
@Test
public void testUpdate3() {
Session session = sf.getCurrentSession();
session.beginTransaction();
Teacher t = (Teacher)session.get(Teacher.class, 1);
t.setName("张三三");
session.getTransaction().commit();
}
@Test
public void testSaveOrUppdate() {
Teacher t = new Teacher();
t.setName("李四");
t.setAddress("天津");
Session session = sf.getCurrentSession();
session.beginTransaction();
session.saveOrUpdate(t);
session.getTransaction().commit();
t.setName("李四四");
Session session2 = sf.getCurrentSession();
session2.beginTransaction();
session2.saveOrUpdate(t);
session2.getTransaction().commit();
}
@Test
public void testClear() {
Session session = sf.getCurrentSession();
session.beginTransaction();
Teacher t = (Teacher)session.load(Teacher.class, 1);
System.out.println(t.getName());
//使用clear()方法清楚缓存
session.clear();
Teacher t2 = (Teacher)session.load(Teacher.class, 1);
System.out.println(t2.getName());
session.getTransaction().commit();
System.out.println(t.getName());
}
@Test
public void testFlush() {
Session session = sf.getCurrentSession();
session.beginTransaction();
Teacher t = (Teacher)session.load(Teacher.class, 1);
t.setName("ttt");
//加入flush()方法后,会导致两次update操作,如果不加入,则在下面的场景下,只会有一次update
session.flush();
t.setName("ttttt");
session.getTransaction().commit();
}
@AfterClass
public static void afterClass(){
sf.close();
}
}