利用Hibernate3.6.10进行CRUD操作(三)

2014-11-23 23:34:42 · 作者: · 浏览: 2
get(Person.class, 1);

s.evict(p);

s.saveOrUpdate(p);//insert。 如果id为1,框架会把它当做瞬时对象来对待

tx.commit();//真正执行。FlushMode.AUTO.

s.close();

}

//saveOrUpdate():如果操作的是一个持久态对象,则不会发生变化

@Test

public void test5(){

Session s = HibernateUtil.getSession();

Transaction tx = s.beginTransaction();

Person p = (Person)s.get(Person.class, 1);

s.saveOrUpdate(p);

tx.commit();

s.close();

}

//get和load的区别:

// 1、get立即检索;load是延迟检索(代理类)

// 2、get如果获取id数据库中不存在的记录,返回null;load会抛出异常

@Test

public void test6(){

Session s = HibernateUtil.getSession();

Transaction tx = s.beginTransaction();

// Person p = (Person)s.get(Person.class, 100);//打印null

Person p = (Person)s.load(Person.class, 100);//抛异常

System.out.println(p);

tx.commit();

s.close();

}

//delete:持久变为瞬时

@Test

public void test7(){

Session s = HibernateUtil.getSession();

Transaction tx = s.beginTransaction();

Person p = (Person)s.load(Person.class, 1);

s.delete(p);//计划执行删除语句

tx.commit();//真正执行

s.close();

}

}