操作持久化对象的方法我们之前在学习CRUD操作的时候都介绍过,但是在了解了对象的状态之后,站在持久化对象的角度上再看这些方法,会有不一样的收获。
1、save():
保存一条记录:将瞬时态对象转成持久态对象
具体示例如下:(HibernateUtils.java详见Hibernate学习-09)
@Test
/**
* save():添加一条记录
*/
public void demo(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Book book = new Book(); //瞬时态对象
book.setName("网页设计");
book.setAuthor("王某");
book.setPrice(32d);
session.save(book); //持久态
tx.commit();
session.close();
}
2、update():
更新一条记录:将脱管态对象转成持久态对象
在<class>标签上设置select-before-update="true"在更新之前先去查询
具体示例如下:(HibernateUtils.java详见Hibernate学习-09)
/**
* update():更新一条记录,将脱管态对象转成持久态
*/
public void demo3(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Book book = new Book(); //瞬时态对象
book.setId(1); //脱管态
book.setName("mysql数据库");
session.update(book); //持久态
tx.commit();
session.close();
}
3、saveOrUpdate():
根据对象状态的不同执行不同的save获得update方法
* 如果对象是一个瞬时态对象:执行save操作
* 如果对象是一个脱管态对象:执行update操作
* 设置id不存在,就会报错,可以在<id>上设置一个unsaved-value=”-1”,执行保存的操作具体示例:(HibernateUtils.java详见Hibernate学习-09)
@Test
/**
* saveOrUpdate():更新或添加一条记录
*/
public void demo2(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Book book = new Book(); //瞬时态对象
book.setName("mysql数据库");
session.saveOrUpdate(book); //持久态
tx.commit();
session.close();
}
4、delete():
将持久态对象转成瞬时态
5、get()/load():
获得一个持久态对象