查询所有:new Query(\分页: setFirstResult(int) setMaxResults(int) @Test public void demo04(){ Configuration config = new Configuration().configure(); SessionFactory sessionFactory = config.buildSessionFactory(); Session session = sessionFactory.openSession(); session.beginTransaction(); //分页查询 ,提供hibernate提供的api分页 // * 回顾sql select * from t_user limit startIndex,pageSize; // ** startIndex 开始索引 // ** pageSize 每页显示个数 Query query = session.createQuery(\); // 第一页 // query.setFirstResult(0); // query.setMaxResults(2); // 第二页 query.setFirstResult(2); //回顾算法: startIndex = (pageNum - 1 ) * pageSize; query.setMaxResults(2); List
} session.close(); factory.close(); 4 api详解
4.1 结构图
PO persistent object 持久对象
应用程序通过po类与hibernate进行交互。
4.2 Configuration
? hibernate 提供用于加载配置文件的。
? 核心配置文件种类:hibernate.properties 和 hibernate.cfg.xml
一般情况使用 hibernate.cfg.xml ,可以配置不同内容(基本信息,映射文件) hibernate.properties 只能配置基本信息(key=value) 参考:%h%/project/etc/hibernate.properties
? 构造方法,new Configuration() hibernate将加载 hibernate.properties 配置文件 ? 提供方法:configure() 加载hibernate.cfg.xml 配置文件
?
通过 configure(String ) 指定自定义的cfg.xml文件。 加载映射文件 hbm.xml
addResource() 加载自定义的映射文件。例如:config.addResource(\addClass() 加载自定义映射文件。例如:config.addClass(User.class);
建议:映射文件与Java通同名同包,且扩展名为hbm.xml 注意:如果重复添加JavaBean,提示错误
4.3 SessionFactory
? ? ? ? ? ?
hibernate提供 工厂,用于生成session 每一个应用程序只能有一个实例(单例),类似Jdbc时学习的连接池 线程安全的,及不同的线程都可以获得不同session。 获得实例 configuration.buildSessionFactory() 获得session
openSession() 创建一个回话,每执行一次,session都是新的。 getCurrentSession() 获得当前线程中绑定的session,暂时不能用。
SessionFactory 缓存配置信息(例如: hibernate.cfg.xml / ...hbm.xml 配置内容)
4.4 Session
? ? ? ?
hibernate 提供 操作 PO类
线程不安全,及每一个用户必须独享自己的session。 常用api
save/update/delete/createQuery (list/setFirstResult/setMaxResults) 操作事务
session.beginTransaction() 开启事务 session.getTransaction() 获得当前事务
4.5 事务操作
? 开启事务:beginTransaction() ? 提交事务:commit() ? 回滚事务:rollback()
5 主配置文件详解
? 名称:hibernate.cfg.xml
? 位置:src (classpath) ---> WEB-INF/classes
? 配置 BeanFactory异常
原因:java web 6.0项目,默认进行Bean校验,通常不使用。
解决方案: 方案1:删除此jar 方案2:hibernate 配置取消