欢迎来到天天文库
浏览记录
ID:56432800
大小:1.34 MB
页数:24页
时间:2020-06-18
《对持久化对象的操作.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章Hibernate对持久化对象操作刘高原主要内容Session常用方法12HQL查询5持久对象的生命周期3Session的常用方法Session的save()方法Session的save()方法用来对持久化对象进行保存,对应到数据库中就是向数据库表中插入一条记录。例如,在第一个Hibernate的程序中有以下代码片段://插入一条记录方法publicvoidsaveUser(){Transactiont1=session.beginTransaction();Useruser=newUser();user.setUsername("Jack");user.setPassword("
2、123456");session.save(user);t1.commit();}如果在Hibernate的核心配置文件中加入语句:true运行程序时,就会在控制台显示出对应执行的SQL语句,该段代码对应显示的SQL语句为:insertintouserTable(username,password)values(?,?)Session的get()和load()方法Session的get()和load()方法都是用来加载持久化类对象的,例如:Useruser=(User)session.get(Us
3、er.class,1);//或Useruser=(User)session.load(User.class,1);用来获取id为1的User的对象,但两者是有区别的。当数据库表中不存在id为1的值时,使用get()方法返回null,而用load()方法则会抛出异常。load()查询会先到缓存中去查,如果没有则返回一个代理对象(不马上到数据库中查找),等到后面使用这个代理对象的时候,才到数据库中查找相应的信息。若还是没有找到就抛出异常。get()查询则是先到缓存中去查,如果没有就直接到数据库中查询,还没有的话就返回null。load()查询支持延迟加载,所谓延迟加载就是用到后才到数据
4、库中查询,从上面一条的查询方式中也可以看出,load()支持延迟加载,而get()查询不支持。延迟加载是由映射文件中class标签的lazy属性控制的,默认值为true,即延迟加载,如果设置该属性为false,即立即加载。Session的delete()方法Session的delete()方法用来对持久化对象进行删除操作,对应数据库中就是删除数据库表的一条记录。在进行删除之前,必须先得到要删除的持久化对象。例如://删除一条记录publicvoiddeleteUser(){Transactiont3=session.beginTransaction();Useruser=(User)se
5、ssion.get(User.class,1);session.delete(user);t3.commit();}事务提交后,执行SQL语句:deletefromuserTablewhereid=?完成对数据库表记录的删除操作。Session的update()方法Session的update()方法用于对持久化对象进行修改操作,对应数据库中就是修改数据库表的一条记录。在进行修改之前,必须先得到要修改的持久化对象。例如://修改一条记录publicvoidupdateUser(){Transactiont2=session.beginTransaction();Useruser=(Use
6、r)session.get(User.class,1);user.setUsername("Jacy");session.update(user);t2.commit();}事务提交后,执行SQL语句:updateuserTablesetusername=?,password=?whereSession的saveOrUpdate()方法Session的saveOrUpdate()方法用于根据对象的不同情况来分别进行处理。如果指定对象是临时建立的一个对象(new出来的对象),即数据库中没有相应记录,执行saveOrUpdate()方法就相当于执行save()方法;如果指定对象是游离对象,即
7、数据库中取出对象在数据库中存在,执行saveOrUpdate()方法就相当于执行update()方法。例如:publicvoidsaveOrUpdate(){Transactiont3=session.beginTransaction();Useruser;user=(User)session.get(User.class,2);if(user==null){user=newUser();//如果没有就创建一个新的,将被保存user
此文档下载收益归作者所有