1.saveOrUpdate方法剖析
saveOrUpdate方法:分情况看是save还是update。
示例:
public void testSaveOrUpdate(){
Teacher t=new Teacher();
t.setName("t21");
t.setTitle("低级");
t.setBrithday(new Date());
t.setZhicheng(ZhiCheng.C);
Configuration cfg=new Configuration();
SessionFactory sf=cfg.configure().buildSessionFactory();
Session session=sf.openSession();
session.beginTransaction();
session.saveOrUpdate(t);
//这次是在数据库中添加了一个(即执行了save方法)
session.getTransaction().commit();
t.setTitle("高级");
Session session2=sf.getCurrentSession();
session2.beginTransaction();
session2.saveOrUpdate(t);
//这次是在数据库中修改了刚刚的数据(即执行了update方法)
session2.getTransaction().commit();
}
输出的Sql语句:
Hibernate:
insert
into
_teacher
(brithday, name, _title, zhicheng)
values
(?, ?, ?, ?)
Hibernate:
update
_teacher
set
brithday=?,
_title=?,
zhicheng=?
where
id=?
可以看出是先insert了teacher对象,之后update了数据库的teacher记录
2.delete方法
从表中删除相应的对象。
例子:删除表中id为4的对象
Teacher t=new Teacher();
t.setId(4);
t.setName("t11");
t.setTitle("中级");
t.setBrithday(new Date());
t.setZhicheng(ZhiCheng.A);
Configuration cfg=new Configuration();
SessionFactory sf=cfg.configure().buildSessionFactory();
Session session=sf.openSession();
session.beginTransaction();
session.delete(t);
session.getTransaction().commit();
session.close();
sf.close();
必须有相应的ID,在缓存中和数据库中有才可以delete它。
这个不难,主要你自己取多做测试就行了