0、目录

  • 1、分页
  • 2、分页,从第3个开始,一共查询5个Product
  • 3、延迟加载
  • 4、对于id不存在的对象的处理
  • 5、参考链接

1、分页

使用Criteria进行分页查询
无论你使用的是Oracle,Mysql,NoSQL还是DB2,分页查询的代码写法都是一样的

2、分页,从第3个开始,一共查询5个Product

Hibernate使用Criteria 来进行分页查询
c.setFirstResult(2); 表示从第3条数据开始
c.setMaxResults(5); 表示一共查询5条数据

package com.how2java.test;import java.util.List;import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;import com.how2java.pojo.Product;public class TestHibernate {public static void main(String[] args) {SessionFactory sf = new Configuration().configure().buildSessionFactory();Session s = sf.openSession();s.beginTransaction();String name = "iphone";Criteria c= s.createCriteria(Product.class);c.add(Restrictions.like("name", "%"+name+"%"));c.setFirstResult(2);c.setMaxResults(5);List<Product> ps = c.list();for (Product p : ps) {System.out.println(p.getName());}s.getTransaction().commit();s.close();sf.close();}
}

3、延迟加载

load方式是延迟加载,只有属性被访问的时候才会调用sql语句
get方式是非延迟加载,无论后面的代码是否会访问到属性,马上执行sql语句

package com.how2java.test;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;import com.how2java.pojo.Product;public class TestHibernate {public static void main(String[] args) {SessionFactory sf = new Configuration().configure().buildSessionFactory();Session s = sf.openSession();s.beginTransaction();System.out.println("log1");Product p = (Product) s.get(Product.class, 1);System.out.println("log2");Product p2 = (Product) s.load(Product.class, 2);System.out.println("log3");System.out.println(p2.getName());System.out.println("log4");s.getTransaction().commit();s.close();sf.close();}
}

4、对于id不存在的对象的处理

都通过id=500去获取对象

  1. get方式会返回null
  2. load方式会抛出异常
package com.how2java.test;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;import com.how2java.pojo.Product;public class TestHibernate {public static void main(String[] args) {SessionFactory sf = new Configuration().configure().buildSessionFactory();Session s = sf.openSession();s.beginTransaction();System.out.println("log1");Product p = (Product)s.get(Product.class, 5);System.out.println("log2");Product p2 = (Product)s.load(Product.class, 5);System.out.println("log3");Product p3 = (Product)s.get(Product.class, 500);System.out.println("p3="+p3);Product p4 = (Product)s.load(Product.class, 500);System.out.println("p3="+p4);s.getTransaction().commit();s.close();sf.close();}
}

5、参考链接

[01] How2j - Hibernate - 分页

398、Java框架52 -【Hibernate - 分页、两种获取方式】 2020.10.27相关推荐

  1. Java框架篇---spring aop两种配置方式

    Java框架篇---spring aop两种配置方式 第一种:注解配置AOP 注解配置AOP(使用 AspectJ 类库实现的),大致分为三步:  1. 使用注解@Aspect来定义一个切面,在切面中 ...

  2. Hibernate中两种获取Session的方式

    转自:https://www.jb51.net/article/130309.htm Session:是应用程序与数据库之间的一个会话,是hibernate运作的中心,持久层操作的基础.对象的生命周期 ...

  3. Java中定义字符串的两种常见方式、使用==和equals()比较字符串

    在讲使用==和equals()比较字符串之前,我们首先要讲定义字符串的两种常见方式,一种是定义一个常量,即直接定义字符串,一种是通过new关键字定义一个变量,即使用String类定义字符串,如下图: ...

  4. Java中匿名类的两种实现方式

    使用匿名内部类课使代码更加简洁.紧凑,模块化程度更高.内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到.然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式 ...

  5. java中字符串的创建_【转载】 Java中String类型的两种创建方式

    本文转载自 https://www.cnblogs.com/fguozhu/articles/2661055.html Java中String是一个特殊的包装类数据有两种创建形式: String s ...

  6. Java基础21 多线程线程两种实现方式 锁

    一.多线程的概念 1.程序 :一个固定逻辑与数据的集合 就称为程序 例如淘宝 贪吃蛇小游戏 2.CPU: 中央处理器 主要用于协调程序与硬件进行配置的工作 3.并发与并行 1.并发(高并发) 在同一个 ...

  7. java 多线程的单例模式,Java多线程中的单例模式两种实现方式

    Java多线程中的单例模式 一.在多线程环境下创建单例 方式一: package com.ietree.multithread.sync; public class Singletion { priv ...

  8. java map遍历_Java中Map集合的两种遍历方式

    Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...

  9. java中两种遍历集合的方式_Java中Map集合的两种遍历方式

    Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...

最新文章

  1. rman备份常用命令
  2. realloc函数引发的慘案
  3. 软件架构设计学习总结(14):大型网站技术架构(八)网站的安全架构
  4. jquery 选项卡实现
  5. 阿里内部mysql规范40条
  6. 使用 python 的 urllib2和 urllib模块爆破 form 表单的简易脚本
  7. collection转换为list_JAVA 集合 接口继承关系和实现,List,Set,Map(总结)
  8. Riverbed调查:惊人发现95%的中国受访者高度关注应用性能
  9. 零基础入门深度学习(3) - 神经网络和反向传播算法
  10. 杭电4515小Q系列故事——世界上最遥远的距离
  11. 爬虫抓取表格中的数据
  12. 在Linux(Ubuntu)下编写编译C语言
  13. Office 2007无法卸载也无法安装的解决
  14. java 809 128 题_java编程题809*??=800*??+9*??+1
  15. 【2021 年 MathorCup 高校数学建模挑战赛—赛道A二手车估价问题】2 问题一 数据预处理、特征工程及模型训练Baseline 和数据
  16. 添加内核驱动模块(4)(mydriver.c+ Konfig+Makefile )
  17. 【fk_index】外键中有无索引的区别
  18. KBMMW-创建自定义服务
  19. 什么是APS高级计划排程(高级计划排产)可视化甘特图,有哪些应用效果?
  20. Java课程设计-基于Java Swing的学生信息管理系统-版本二

热门文章

  1. 共阴极数码管,学号显示实验
  2. 利用JS控制插入视频的播放/暂停/快进等功能
  3. 天池大赛 xgboost/lightgbm + python36 + win10_64 环境配置
  4. 第6章 垃圾邮件识别
  5. oracle11g回闪,oracle11gdroptable后闪回-Oracle
  6. 软件需求分析步骤方法
  7. 天基实业怎样投资理财收益稳定
  8. 微信小程登录功能和获取手机号
  9. golang json解析
  10. 短信验证码开发教程 - 4.后端篇