欢迎来到天天文库
浏览记录
ID:39945245
大小:311.50 KB
页数:62页
时间:2019-07-15
《hibernate持久化数据库第三天》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、hibernate持久化数据第三天概述知识点一:各种标签中的检索策略知识点二:HQL查询HQL(Hibernatequerylanguage)1、查询实体2、查询实体属性3、参数绑定4、排序5、分组6、分页7、命名查询8、本地SQL查询9、联接查询知识点三:QBC查询QBC(QueryByCriteria)知识点一:检索策略知识点1:初始化测试数据publicvoidinitdata(){Sessionsession=sessionFacoty.openSession();Transactiontx=s
2、ession.beginTransaction();Customerc=newCustomer();c.setName("xxxx");c.setAge(20+newRandom().nextInt(12));session.save(c);for(inti=1;i<=10;i++){Ordero=newOrder();o.setOrderNumber("NO"+i);o.setPrice(5000+i*10d);c.getOrders().add(o);o.setCustomer(c);session
3、.save(o);}tx.commit();session.close();}知识点2:区分立即检索和延迟检索查询编号为1的客户Class标签中lazy=false立即检索publicvoidloadCustomerfalse(){Sessionsession=sessionFacoty.openSession();Transactiontx=session.beginTransaction();//该行代码让hibernate执行select语句,查询数据库Customerc=(Customer)se
4、ssion.load(Customer.class,1);c.getAge();tx.commit();session.close();}class标签中lazy=true延迟检索publicvoidloadCustomertrue(){Sessionsession=sessionFacoty.openSession();Transactiontx=session.beginTransaction();Customerc=(Customer)session.load(Customer.class,1);
5、//该行代码让hibernate执行select语句,//查询数据库(需要用的时候查数据库)c.getAge();tx.commit();session.close();}立即检索:立即加载检索方法指定的对象延迟检索:延迟加载检索方法指定的对象classcom.demo.pojo.Role_$$_javassist_0Hibernate的代理检索知识点3:理解延迟检索中的代理publicvoidloadCustomertrueProxy(){Sessionsession=sessionFacoty.op
6、enSession();Transactiontx=session.beginTransaction();//此时查询到的c对象是一个代理对象Customerc=(Customer)session.load(Customer.class,1);System.out.println(c.getClass());//代理对象c.getClass();//hibernate不会执行select语句c.getId();//hibernate不会执行select语句c.getAge();//该行hibernate
7、会执行select语句tx.commit();session.close();}只有延迟检索会产生代理对象,立即检索不会产生代理对象Hibernate使用javassist-3.9.0.GA.jar包创建代理Customer对象Customer对象代理对象(初始化oid的值,其他的值不初始化)Hibernate的延迟检索知识点3:初始化延迟检索中的代理//初始化代理对象publicvoidloadRoleTrueProxyInit(){Sessionsession=sessionFacoty.openS
8、ession();Transactiontx=session.beginTransaction();//此时查询到的r对象是一个代理对象Roler=(Role)session.load(Role.class,1);System.out.println(r.getClass());//代理对象//判断代理对象是否被初始化对集合对象也适用if(!Hibernate.isInitialized(r)){System.out.println(r.g
此文档下载收益归作者所有