Configuration:负责管理Hibernate的配置信息
  1.加载核心配置文件
    核心配置有两种:
      hibernate.properties
        加载:Configuration configuration = new Configuration();
      hibernate.cfg.xml:
        加载:Configuration configuration = new Configuration().configure();

  2.加载映射文件
    第一种写法:
      configuration.addResource("cn/yzu/hibernate3/demo1/Customer.hbm.xml");
    第二种写法:(要求:映射文件名称要规范,类与映射在同一个包下)
      configuration.addClass(Customer.class);

SessionFactory:Session工厂
  Configuration对象根据当前的配置信息生成 SessionFactory对象,SessionFactory 对象中保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句
  SessionFactory 对象是线程安全的,SessionFactory还负责维护Hibernate的二级缓存,SessionFactory对象根据数据库信息,维护连接池,创建Session(相当于Connection)对象

  抽取工具类

public class HibernateUtils {private static Configuration configuration;private static SessionFactory sessionFactory;static{configuration = new Configuration().configure();sessionFactory = configuration.buildSessionFactory();}public static Session openSession(){return sessionFactory.openSession();}public static void main(String[] args) {openSession();}
}

  在Hibernate中使用c3p0连接池
    引入c3p0的jar包:c3p0-0.9.1.jar
    在核心配置中添加一段配置:

<!-- C3P0连接池设定-->
<!-- 使用c3po连接池 配置连接池提供的供应商-->
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider </property>
<!--在连接池中可用的数据库连接的最少数目 -->
<property name="c3p0.min_size">5</property>
<!--在连接池中所有数据库连接的最大数目 -->
<property name="c3p0.max_size">20</property>
<!--设定数据库连接的过期时间,以秒为单位,
如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 -->
<property name="c3p0.timeout">120</property>
<!--每3000秒检查所有连接池中的空闲连接 以秒为单位-->
<property name="c3p0.idle_test_period">3000</property>

Session(相当于 JDBC的 Connection)
  Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心,是线程不安全的,所有持久化对象必须在 session 的管理下才可以进行持久化操作,Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久化操作的数据都缓存在 session 对象处,持久化类与 Session 关联起来后就具有了持久化的能力,Session维护了Hiberante一级缓存.

  方法:

    save()/persist()    :添加
    update()         :修改
    saveOrUpdate()     :增加和修改对象
    delete()          :删除对象
    get()/load()      :根据主键查询
    createQuery()      :创建一个Query接口,编写HQL语句
    createSQLQuery()   :创建一个SQLQuery接口,编写SQL语句数据库操作对象
    createCriteria()     :返回一个Criteria接口.条件查询

Transaction
  获得:Transaction tx = session.beginTransaction();

  常用方法:
    commit() :提交相关联的session实例
    rollback() :撤销事务操作
    wasCommitted() :检查事务是否提交

  如果没有开启事务,那么每个Session的操作,都相当于一个独立的事务

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

  例子:

// 1.简单查询
List<Customer> list = session.createQuery("from Customer").list();// 2.条件查询:
List<Customer> list = session.createQuery("from Customer where name = ?").setParameter(0, "芙蓉").list();// 3.分页查询:select * from customer limit a,b; a:从哪开始  b:每页显示记录数.
Query query = session.createQuery("from Customer");
query.setFirstResult(3);
query.setMaxResults(3);
List<Customer> list = query.list();

Criteria(条件查询接口)

// 1.简单查询
List<Customer> list = session.createCriteria(Customer.class).list();// 2.条件查询:
Criteria criteria = session.createCriteria(Customer.class);
criteria.add(Restrictions.eq("name","芙蓉"));
List<Customer> list = criteria.list();// 3.分页查询:
Criteria criteria = session.createCriteria(Customer.class);
criteria.setFirstResult(3);
criteria.setMaxResults(3);
List<Customer> list = criteria.list();

转载于:https://www.cnblogs.com/fengmingyue/p/6166329.html

Hibernate的核心API相关推荐

  1. hibernate教程--常用配置和核心API详解

    一.Hibernate的常用的配置及核心API. 1.1 Hibernate的常见配置: 1.1.1.核心配置: 核心配置有两种方式进行配置:  1)属性文件的配置: * hibernate.prop ...

  2. hibernate教程--常用配置和核心API

    一.Hibernate的常用的配置及核心API. 1.1Hibernate的常见配置: 1.1.1.核心配置: 核心配置有两种方式进行配置: 1)属性文件的配置: * hibernate.proper ...

  3. hibernate框架学习第二天:核心API、工具类、事务、查询、方言、主键生成策略等...

    核心API Configuration 描述的是一个封装所有配置信息的对象 1.加载hibernate.properties(非主流,早期) Configuration conf = new Conf ...

  4. 【大话Hibernate】Hibernate的核心接口和类

    Hibernate的核心类和接口一共有6个,分别为:Session.SessionFactory. Transaction.Query.Criteria和Configuration.这6个核心和类接口 ...

  5. JAVAWEB开发之工作流详解(一)——Activiti的环境搭建、插件安装、核心API

    工作流的概念 工作流(Workflow),就是"业务过程的部分或整体在计算机应用环境下的自动化",它主要解决的是"使在多个参与者之间按照某种预定义的规则传递文档.信息或任 ...

  6. Hibernate的常用API

    Hibernate的核心类和接口一共有6个,分别为:Session.SessionFactory. Transaction.Query.Criteria和Configuration.这6个核心类和接口 ...

  7. EXT核心API详解(二)-Array/Date/Function/Number/String

    EXT核心API详解(二)-Array/Date/Function/Number/String Array类 indexOf( Object o )  Number object是否在数组中,找不到返 ...

  8. 核心API最佳实践——JDK日志分级

    核心API最佳实践--JDK日志分级 时间:2005-10-29 08:00 来源:网管之家bitsCN.com 字体:[大 中 小] 日志(Log)是什么?字典对其的解释是"对某种机器工作 ...

  9. Java核心API需要掌握的程度

    Java的核心API是非常庞大的,这给开发者来说带来了很大的方便,经常人有评论,java让程序员变傻. 但是一些内容我认为是必须掌握的,否则不可以熟练运用java,也不会使用就很难办了. 1.java ...

最新文章

  1. Keras vs PyTorch,哪一个更适合做深度学习?
  2. MS SQL入门基础:启动与关闭服务器
  3. 在CentOS 6.3中安装与配置JDK-7
  4. Webkit for android
  5. 如何修改远程桌面连接3389端口
  6. python倒排索引实现_倒排索引原理和实现 - uncle_LLD的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. Shell Script 学习一
  8. 2018-2019-1 20165301 《信息安全系统设计基础》第六周学习总结
  9. Springer期刊参考文献格式如何用Latex生成
  10. 通过身份证地址或家庭地址获取行政区划代码
  11. Unity之FBX文件操作学习笔记(一)
  12. C# EF The instance of entity type ‘EqInfo‘ cannot be tracked because another instance with the
  13. 商业化广告--体系学习-- 11 -- 业务实战篇 --流量优化:如何兼顾广告收入和用户体验?
  14. markdown文本居中,段首缩进的方法
  15. 博贤科技管理系统漏洞0day
  16. JavaScript的执行过程(深入执行上下文、GO、AO、VO和VE等概念)
  17. Phython基础语法知识点汇集
  18. 【网络协议趣谈】HTTPS协议加密证书和工作模式
  19. 微信小程序 console @appservice-current-context
  20. 智慧商贸进货时同时新增日常支出

热门文章

  1. oracle rollup分组没有数据时为0_Hive 入门数据分析基础 5
  2. 环信SDK 踩坑记webIM篇(一)
  3. Python笔记-CAPM(资本资产定价模型)例子
  4. Android逆向笔记-破解自己编写的Android应用程序(开发及破解)
  5. HTTP之content-type相关
  6. windows中mysql添加环境变量_windows 下添加mysql到系统环境变量
  7. 爬虫分页爬取猎聘_想把python爬虫了解透彻吗?一起盘它 ! !
  8. mybatis like模糊查询_Java自学之mybatis:模糊查询和多条件查询
  9. 腾讯Light·公益创新挑战赛获奖名单揭晓!看“创意+公益+科技”融合的力量
  10. Process com.xxxxxxxx has died