Hibernate的核心接口

简介: Hibernate的核心接口


Hibernate5个核心的接口:

  1. 1,Configuration接口:配置Hibernate,根据其启动Hibernate,创建SessionFactory对象;
  2. 2,SessionFactory接口:初始化Hibernate,充当数据存储源的代理,创建session对象,SessionFactory是
  3.      线程安全的,意味着它的同一个实例可以被应用的多个线程共享,是重量级二级缓存;
  4. 3,session接口:负责保存、更新、删除、加载和查询对象,是一个非线程安全的,避免多个线程共享一个session,是轻量级,一级缓存。
  5. 4,Transaction接口:管理事务。可以对事务进行提交和回滚;
  6. 5,Query和Criteria接口:执行数据库的查询。



  • Configuration:负责管理 Hibernate 的配置信息
  1. 1.加载核心配置文件:
  2. 核心配置有两种:
  3. * hibernate.properties:
  4. * 加载:
  5. * Configuration configuration = new Configuration();
  6. * hibernate.cfg.xml:
  7. * 加载:
  8. * Configuration configuration = new Configuration().configure();
  9. 2.加载映射文件:
  10. * 第一种写法:
  11. * configuration.addResource("cn/.../hibernate3/demo1/Customer.hbm.xml");
  12. * 第二种写法:(要求:映射文件名称要规范,类与映射在同一个包下)
  13. * configuration.addClass(Customer.class);


SessionFactory:Session工厂

  1. Configuration对象根据当前的配置信息生成 SessionFactory对象
  2. SessionFactory 对象中保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句
  3. SessionFactory 对象是线程安全的
  4. SessionFactory还负责维护Hibernate的二级缓存
  5. SessionFactory对象根据数据库信息,维护连接池,创建Session(相当于Connection)对象.
  6. 抽取工具类:
  1. publicclassHibernateUtils {
  2. privatestatic Configuration configuration;
  3. privatestatic SessionFactory sessionFactory;
  4. static{
  5. configuration = newConfiguration().configure();
  6. sessionFactory = configuration.buildSessionFactory();
  7. }
  8. publicstatic Session openSession(){
  9. return sessionFactory.openSession();
  10. }
  11. publicstaticvoidmain(String[] args) {
  12. openSession();
  13. }
  14. }


  1. 在Hibernate中使用c3p0连接池:
  2. * 引入c3p0的jar包
  3. * 在核心配置中添加一段配置:
  1. <!-- C3P0连接池设定-->
  2. <!-- 使用c3po连接池  配置连接池提供的供应商-->
  3. <propertyname="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider                                                                                                                                        </property>
  4. <!--在连接池中可用的数据库连接的最少数目 -->
  5. <propertyname="c3p0.min_size">5</property>
  6. <!--在连接池中所有数据库连接的最大数目  -->
  7. <propertyname="c3p0.max_size">20</property>
  8. <!--设定数据库连接的过期时间,以秒为单位,
  9. 如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 -->
  10. <propertyname="c3p0.timeout">120</property>
  11. <!--每3000秒检查所有连接池中的空闲连接 以秒为单位-->
  12. <propertyname="c3p0.idle_test_period">3000</property>


Session:

  1. 相当于 JDBC的 Connection
  2. Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心
  3. Session是线程不安全的
  4. 所有持久化对象必须在 session 的管理下才可以进行持久化操作
  5. Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久化操作的数据都缓存在 session 对象处
  6. 持久化类与 Session 关联起来后就具有了持久化的能力
  7. Session维护了Hiberante一级缓存.
  1. save()/persist() :添加.
  2. update() :修改
  3. saveOrUpdate() :增加和修改对象
  4. delete()   :删除对象
  5. get()/load()   :根据主键查询
  6. createQuery() :创建一个Query接口,编写HQL语句
  7. createSQLQuery() :创建一个SQLQuery接口,编写SQL语句数据库操作对象
  8. createCriteria()   :返回一个Criteria接口.条件查询


Transaction:

  1. 获得:
  2. Transaction tx = session.beginTransaction();
  3. 常用方法:
  1. commit() :提交相关联的session实例
  2. rollback() :撤销事务操作
  3. wasCommitted() :检查事务是否提交
  1. ***** 如果没有开启事务,那么每个Session的操作,都相当于一个独立的事务


Query

  1. Query代表面向对象的一个Hibernate查询操作
  2. session.createQuery 接受一个HQL语句
  3. HQL是Hibernate Query Language缩写, 语法很像SQL语法,但是完全面向对象的


Criteria

  1. Criteria条件查询:

参考来源: http://blog.csdn.net/zuoanren/article/details/8643824


目录
相关文章
|
SQL Java 数据库连接
Mybatis知识【Mapper代理开发&核心配置】第三章
Mybatis知识【Mapper代理开发&核心配置】第三章
|
Java 数据库连接 API
MyBatis核心Api
MyBatis核心Api
62 0
|
SQL XML 缓存
Mybatis核心API介绍(九)
Mybatis核心API介绍(九)
126 0
|
SQL 缓存 Java
第03篇:Mybatis核心类详细介绍
前面我们知道Mybatis的解析原理,知道了在 `Configuration` 、`MapperBuilderAssistant` 出现了很多核心的类。 正是由这些类来实现了,Mybatis的核心功能。所以要想完全搞懂 Mybatis,这些类就必须要进行深入的研究,废话不多少,直接就开始吧。
287 0
第03篇:Mybatis核心类详细介绍
|
Java 数据库连接 mybatis
mybatis学习(16):不使用接口的方式
mybatis学习(16):不使用接口的方式
156 0
mybatis学习(16):不使用接口的方式
|
SQL XML 缓存
Mybatis中Dao接口的工作原理
Mybatis中Dao接口的工作原理
213 0
|
SQL Java 数据库连接
MyBatis:接口代理方式实现Dao
MyBatis:接口代理方式实现Dao
300 0
MyBatis:接口代理方式实现Dao
|
XML Java 数据库连接
2021-5-14hibernate核心开发接口(API)(上)
0. hibernate应用程序体系结构视图 1. Hibernate 核心接口API ① Configuration接口 ② SessionFactory接口 ③ Session接口 概述 session对象的获取 a. 获取方式(两种): b. 两种方法的比较 session中的常用方法 CURD(增删查改) CURD-定义工具类 提取共享代码 创建HbnUtils工具类 类、表结构 CURD增删改的实现 save() persist() delete() update() 根据`id` 查询get() 根据`id`查询 load() `get()`和`load()` 区别
135 0
2021-5-14hibernate核心开发接口(API)(上)
|
SQL Java 数据库连接
2021-5-14hibernate核心开发接口(API)(下)
persist() delete() 代码: update() 代码: 根据id 查询get() 根据id查询 load()
151 0
2021-5-14hibernate核心开发接口(API)(下)
|
SQL Java 数据库连接
MyBatis - DAO接口不需要实现类分析(下)
MyBatis - DAO接口不需要实现类分析(下)
273 0
MyBatis - DAO接口不需要实现类分析(下)