针对处于出与持久化状态的类,主要是针对Session(会话实例)进行操作,本文主要介绍几个常用的方法。
前提代码如下:
public static void main(String[] args) {
Session session = null;
Transaction tran = null;
try {
Configuration cfg = new Configuration().configure();
SessionFactory factory = cfg.buildSessionFactory();
session = factory.openSession();
tran = session.beginTransaction();
Emp e = new Emp();
//下文的方法操作写在这个区域
tran.commit();
} catch (Exception e) {
e.printStackTrace();
tran.rollback();
}finally{
session.close();
}
}
}
save//把瞬时对象保存到数据库中
e.setEmpno(1234);
e.setEname("王五");
e.setJob("bbbbbb");
e.setMgr(7839);
e.setSal(3000.0);
e.setComm(200.0);
e.setDeptno(30);
session.save(e);
get//通过对象标示获取对象
//通过get()方法返回的是Object类型,需要进行强制转换
//第一个参数为class,第二个参数为数据主键
e =(Emp)session.get(Emp.class, 7369);
load//通过对象标示获取对象
//通过load()方法返回的是Object类型,需要进行强制转换
//第一个参数为class,第二个参数为数据主键
e = (Emp)session.load(Emp.class, 7369);
//get和load区别
//1、如果get查询查询没有结果返回null
//2、如果load查询查询没有结果直接抛出异常
//3、get不支持延迟加载
//4、load支持延迟加载
update//把持久化的对象更新到数据库
//注意需要设置主键
e.setEmpno(2222);
e.setEname("王五");
session.update(e);
saveorupdate//保存或者更新
e.setEmpno(2222);
e.setEname("王五");
session.saveOrUpdate(e);
//此方法先查询,不存在则save,存在则update
delete//删除对象
session.delete(new Emp(2222));
close//关闭会话
sessin.close();