hibernate学习笔记05----离线查询
2017-05-30 22:32
351 查看
离线查询DetachedCriteria
DetachedCriteria是Criteria的子实现,通过静态方法DetachedCriteria.forClass(PO.class)来实例化,它可以像Criteria的对象一样增加各种查询条件,通过detachedCriteria.getExecutableCriteria(session)方法与session关联,变成在线Criteria对象,最后通过criteria.list()方法得到数据。【示例】
查询id值大等于2且城市是杭州的客户信息。
//离线条件查询 @Test //查询id值小于2且城市是上海的客户信息。(单表) public void testDetachedCriteria(){ //模拟业务层service:业务相关的逻辑抽离出来 //拼接查询条件 // String sql="...where 1=1";//判断。。。 //直接创建一个"离线条件对象" DetachedCriteria detachedCriteria=DetachedCriteria.forClass(Customer.class); //玩命加条件 detachedCriteria.add(Restrictions.lt("id", 2)) .add(Restrictions.like("city", "%上海%")); //将离线条件对象传递给dao层 //模拟dao层数据层持久层集成层 Session session = HibernateUtils.openSession(); session.beginTransaction(); //将离线条件转换成可执行的条件对象(与session关联了) //好处,dao变的通用 Criteria criteria = detachedCriteria.getExecutableCriteria(session); //直接查询 List<Customer> list = criteria.list(); System.out.println(list); session.getTransaction().commit();//flush session.close(); }
【Criteria和DetachedCriteria的区别】
Criteria和DetachedCriteria
的主要区别在于创建的形式不一样, Criteria
是在线的,所以它是由 Hibernate Session
进行创建的;而 DetachedCriteria
是离线的,创建时无需Session,DetachedCriteria
提供了 2
个静态方法 forClass(Class)
或 forEntityName(Name)进行DetachedCriteria
实例的创建。使用getExecutableCriteria(session)方法转换成在线可执行的Criteria
相关文章推荐
- Hibernate 3.2 学习笔记 查询和检索
- hibernate 中HQL语句查询学习笔记一
- Hibernate学习---第十节:Hibernate之QBC、样例查询&离线查询
- Hibernate视频学习笔记(13)一级缓存_二级缓存_查询缓存
- Hibernate学习---第十一节:Hibernate之QBC、样例查询&离线查询
- Hibernate学习笔记 第六章 HQL查询与缓存
- hibernate 学习笔记(2)——HQL和高级查询
- Hibernate中的命名查询(学习笔记)
- Hibernate学习笔记总结(三)——Hibernate 3.x——HQL查询语言(重点)
- Hibernate学习笔记---通过load和get方法来查询对象(只能根据主键来查询)
- Hibernate学习笔记 -- day10 OID、对象导航查询、原生SQL
- [学习小笔记] hibernate的简单数据库查询
- [Oracle 学习笔记] 05 连接查询
- 【05】框架学习—Hibernate中查询详解与查询优化
- JavaWeb学习笔记-Hibernate-05-实体对象与数据库关键词冲突解决方法
- hibernate学习笔记6--Criteria查询方式、完整小练习(开发步骤)
- 【EF学习笔记05】----------DBContext基础查询
- Hibernate学习笔记之三种查询方式
- Hibernate 学习笔记05 --对象关系映射
- hibernate框架学习笔记10:HQL查询详解