您的位置:首页 > 其它

hibernate学习之检索策略

2017-06-21 19:08 459 查看


检索策略的概念

1.hibernate检索测策略分为两种
(1)立即查询:根据id查询,调用get方法,一调用就发送sql语句查询数据库数据
Session session = SessionFactoryUtil.GetSession();
Customer c = session.get(Customer.class, "4028802d5cc56d3b015cc56d3dc50000");
System.out.println(c);


(2)延迟查询:根据ID查询,还有load方法,调用load方法不会马上发送sql语句查询数据库,只有得到对象里面的值的时候才会发送语句查询数据库
返回有id值,除了id值才会发送sql语句
Session session = SessionFactoryUtil.GetSession();
Customer c = session.load(Customer.class, "4028802d5cc56d3b015cc56d3dc50000");
System.out.println(c.getC_id());
System.out.println(c.getC_name());

2.延迟查询分为两类:
(1)类级别延迟:根据id查询返回实体类对象,调用load方法,就不会马上发送sql语句,只有需要某个值的时候才会发送sql语句
(2)关联级别延迟:查询出某个客户,再查询这个客户的所有联系人,查询联系人是否需要延迟,这个过程就是关联级别延迟
Session session = SessionFactoryUtil.GetSession();
Customer c = session.load(Customer.class, "4028802d5cc56d3b015cc56d3dc50000");
//在get这个集合时没有发送sql语句
Set<LinkedMan> lm = c.getLinkedMans();
//获取这个集合里面值才会发送sql语句
System.out.println(lm.size());


关联级别延迟操作



<set name="linkedMans" cascade="save-update,delete" lazy="false">
<!-- 一对多建表
hibernate机制:默认双向维护外键,在一和多那一方都需要配置外键
column属性值就是外键的名称
-->
<key column="clid"></key>
<!-- 客户所有的联系人,class里面写的联系人类的全路径 -->
<one-to-many class="com.sq.entity.LinkedMan"/>
</set>



批量查询



减少发送的sql语句
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息