Hibernate的核心API
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相关推荐
- hibernate教程--常用配置和核心API详解
一.Hibernate的常用的配置及核心API. 1.1 Hibernate的常见配置: 1.1.1.核心配置: 核心配置有两种方式进行配置: 1)属性文件的配置: * hibernate.prop ...
- hibernate教程--常用配置和核心API
一.Hibernate的常用的配置及核心API. 1.1Hibernate的常见配置: 1.1.1.核心配置: 核心配置有两种方式进行配置: 1)属性文件的配置: * hibernate.proper ...
- hibernate框架学习第二天:核心API、工具类、事务、查询、方言、主键生成策略等...
核心API Configuration 描述的是一个封装所有配置信息的对象 1.加载hibernate.properties(非主流,早期) Configuration conf = new Conf ...
- 【大话Hibernate】Hibernate的核心接口和类
Hibernate的核心类和接口一共有6个,分别为:Session.SessionFactory. Transaction.Query.Criteria和Configuration.这6个核心和类接口 ...
- JAVAWEB开发之工作流详解(一)——Activiti的环境搭建、插件安装、核心API
工作流的概念 工作流(Workflow),就是"业务过程的部分或整体在计算机应用环境下的自动化",它主要解决的是"使在多个参与者之间按照某种预定义的规则传递文档.信息或任 ...
- Hibernate的常用API
Hibernate的核心类和接口一共有6个,分别为:Session.SessionFactory. Transaction.Query.Criteria和Configuration.这6个核心类和接口 ...
- EXT核心API详解(二)-Array/Date/Function/Number/String
EXT核心API详解(二)-Array/Date/Function/Number/String Array类 indexOf( Object o ) Number object是否在数组中,找不到返 ...
- 核心API最佳实践——JDK日志分级
核心API最佳实践--JDK日志分级 时间:2005-10-29 08:00 来源:网管之家bitsCN.com 字体:[大 中 小] 日志(Log)是什么?字典对其的解释是"对某种机器工作 ...
- Java核心API需要掌握的程度
Java的核心API是非常庞大的,这给开发者来说带来了很大的方便,经常人有评论,java让程序员变傻. 但是一些内容我认为是必须掌握的,否则不可以熟练运用java,也不会使用就很难办了. 1.java ...
最新文章
- Keras vs PyTorch,哪一个更适合做深度学习?
- MS SQL入门基础:启动与关闭服务器
- 在CentOS 6.3中安装与配置JDK-7
- Webkit for android
- 如何修改远程桌面连接3389端口
- python倒排索引实现_倒排索引原理和实现 - uncle_LLD的个人空间 - OSCHINA - 中文开源技术交流社区...
- Shell Script 学习一
- 2018-2019-1 20165301 《信息安全系统设计基础》第六周学习总结
- Springer期刊参考文献格式如何用Latex生成
- 通过身份证地址或家庭地址获取行政区划代码
- Unity之FBX文件操作学习笔记(一)
- C# EF The instance of entity type ‘EqInfo‘ cannot be tracked because another instance with the
- 商业化广告--体系学习-- 11 -- 业务实战篇 --流量优化:如何兼顾广告收入和用户体验?
- markdown文本居中,段首缩进的方法
- 博贤科技管理系统漏洞0day
- JavaScript的执行过程(深入执行上下文、GO、AO、VO和VE等概念)
- Phython基础语法知识点汇集
- 【网络协议趣谈】HTTPS协议加密证书和工作模式
- 微信小程序 console @appservice-current-context
- 智慧商贸进货时同时新增日常支出
热门文章
- oracle rollup分组没有数据时为0_Hive 入门数据分析基础 5
- 环信SDK 踩坑记webIM篇(一)
- Python笔记-CAPM(资本资产定价模型)例子
- Android逆向笔记-破解自己编写的Android应用程序(开发及破解)
- HTTP之content-type相关
- windows中mysql添加环境变量_windows 下添加mysql到系统环境变量
- 爬虫分页爬取猎聘_想把python爬虫了解透彻吗?一起盘它 ! !
- mybatis like模糊查询_Java自学之mybatis:模糊查询和多条件查询
- 腾讯Light·公益创新挑战赛获奖名单揭晓!看“创意+公益+科技”融合的力量
- Process com.xxxxxxxx has died