hibernate框架(2)---Hibernate的核心API
2017-03-01 13:37
302 查看
[b]Hibernate的核心API[/b]
一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解:
(1) 实例化配置对象 configuration
这一步是用来加载核心配置文件
核心配置有两种:
hibernate.properties
加载:Configuration configuration = new Configuration();
hibernate.cfg.xml:
加载:Configuration configuration = new Configuration().configure();
(2)创建会话工厂 sessionFactory
Configuration对象根据当前的配置信息生成 SessionFactory对象,
SessionFactory 对象中保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句
SessionFactory 对象是线程安全的,SessionFactory还负责维护Hibernate的二级缓存,
SessionFactory对象根据数据库信息,维护连接池,创建Session(相当于Connection)对象
(3)创建会话 session对象(相当于 JDBC的 Connection)
Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心,是线程不安全的
所有持久化对象必须在 session 的管理下才可以进行持久化操作,Session 对象有一个一级缓存
显式执行 flush 之前,所有的持久化操作的数据都缓存在 session 对象处,持久化类与 Session 关联起来后就具有了持久化的能力,
Session维护了Hiberante一级缓存.
session对象提供了许多的方法来实现增删改差:
save()/persist() :添加
update() :修改
saveOrUpdate() :增加和修改对象
delete() :删除对象
get()/load() :根据主键查询
createQuery() :创建一个Query接口,编写HQL语句
createSQLQuery() :创建一个SQLQuery接口,编写SQL语句数据库操作对象
createCriteria() :返回一个Criteria接口.条件查询
(4)提取工具类
因为我们在项目开发中经常需要进行相关增删改查的操作,所以都需要这个session对象,这个时候我们可以把她变成一个工具类
(5) 开启事务 Transaction 对象
获得:Transaction tx = session.beginTransaction();
常用方法:
commit() :提交相关联的session实例
rollback() :撤销事务操作
wasCommitted() :检查事务是否提交
如果没有开启事务,那么每个Session的操作,都相当于一个独立的事务
6.Query 对象
Query代表面向对象的一个Hibernate查询操作
session.createQuery 接收一个HQL语句
HQL是Hibernate Query Language缩写, 语法很像SQL语法,但是完全面向对象的
举例
条件查询
这篇文字就讲到这了,欢迎大家多多指点,谢谢!
一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解:
1 public void testInsert() { 2 //(1) 实例化配置对象 加载映射文件 加载 hibernate.cfg.xml 3 Configuration configuration = new Configuration().configure(); 4 //(2)创建会话工厂 5 SessionFactory sessionFactory = configuration.buildSessionFactory(); 6 //(3) 创建会话 7 Session session = sessionFactory.openSession(); 8 //(4) 开启事务 9 Transaction transaction = session.beginTransaction(); 10 11 /* 12 *编写自己的逻辑代码 13 */ 14 15 // 提交事务 16 transaction.commit(); 17 session.close(); 18 sessionFactory.close(); 19 }
(1) 实例化配置对象 configuration
这一步是用来加载核心配置文件
核心配置有两种:
hibernate.properties
加载:Configuration configuration = new Configuration();
hibernate.cfg.xml:
加载:Configuration configuration = new Configuration().configure();
(2)创建会话工厂 sessionFactory
Configuration对象根据当前的配置信息生成 SessionFactory对象,
SessionFactory 对象中保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句
SessionFactory 对象是线程安全的,SessionFactory还负责维护Hibernate的二级缓存,
SessionFactory对象根据数据库信息,维护连接池,创建Session(相当于Connection)对象
(3)创建会话 session对象(相当于 JDBC的 Connection)
Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心,是线程不安全的
所有持久化对象必须在 session 的管理下才可以进行持久化操作,Session 对象有一个一级缓存
显式执行 flush 之前,所有的持久化操作的数据都缓存在 session 对象处,持久化类与 Session 关联起来后就具有了持久化的能力,
Session维护了Hiberante一级缓存.
session对象提供了许多的方法来实现增删改差:
save()/persist() :添加
update() :修改
saveOrUpdate() :增加和修改对象
delete() :删除对象
get()/load() :根据主键查询
createQuery() :创建一个Query接口,编写HQL语句
createSQLQuery() :创建一个SQLQuery接口,编写SQL语句数据库操作对象
createCriteria() :返回一个Criteria接口.条件查询
(4)提取工具类
因为我们在项目开发中经常需要进行相关增删改查的操作,所以都需要这个session对象,这个时候我们可以把她变成一个工具类
public class HibernateUtils { private static Configuration configuration; private static SessionFactory sessionFactory; static{ configuration=new Configuration().configure(); sessionFactory=configuration.buildSessionFactory(); } public static Session getSession(){ return sessionFactory.openSession(); } } /* *通过这个工具类,只要你每次HibernateUtils.getSession *就可以获得session对象 */
(5) 开启事务 Transaction 对象
获得:Transaction tx = session.beginTransaction();
常用方法:
commit() :提交相关联的session实例
rollback() :撤销事务操作
wasCommitted() :检查事务是否提交
如果没有开启事务,那么每个Session的操作,都相当于一个独立的事务
6.Query 对象
Query代表面向对象的一个Hibernate查询操作
session.createQuery 接收一个HQL语句
HQL是Hibernate Query Language缩写, 语法很像SQL语法,但是完全面向对象的
举例
//条件查询 public void testQueryByCondition(){ // 获取Session对象 Session session = HibernateUtils.getSession(); //开启事务 Transaction transaction =session.beginTransaction(); Criteria criteria =session.createCriteria(Customer.class); //创建条件对象 Criterion criterion =Restrictions.eq("name", "小明_4"); //把查询条件对象加载到查询对象 criteria.add(criterion); List<Customer> customers =criteria.list(); System.out.println(customers); transaction.commit(); session.close(); }
条件查询
这篇文字就讲到这了,欢迎大家多多指点,谢谢!
相关文章推荐
- Hibernate的核心API
- JAVAWEB开发之Hibernate详解(一)——Hibernate的框架概述、开发流程、CURD操作和核心配置与API以及Hibernate日志的使用
- Hibernate核心API
- hibernate核心API使用
- JPA核心API-基于Hibernate实现
- Hibernate核心API(Notes)
- hibernate_核心API
- Hibernate基础配置及核心API概述
- hibernate学习之核心api
- Hibernate的核心API
- hibernate---核心API-get-load方法
- JAVAWEB开发之Hibernate详解(一)——Hibernate的框架概述、开发流程、CURD操作和核心配置与API以及Hibernate日志的使用
- hibernate教程--常用配置和核心API详解
- hibernate学习之三——hibernate核心API
- Hibernate的核心配置文件和API
- Hibernate核心API
- hibernate-核心API-update
- Hibernate的主要体系结构,基本步骤,核心API,主键生成方式
- Hibernate的五个核心API
- hibernate核心API