博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
05-Hibernate的核心API及使用c3p0连接池
阅读量:5290 次
发布时间:2019-06-14

本文共 2305 字,大约阅读时间需要 7 分钟。

Hibernate的核心API

  

 

Configuration:负责管理 Hibernate 的配置信息

 

      • 1.加载核心配置文件:

核心配置有两种:

* hibernate.properties:

* 加载:

* Configuration configuration = new Configuration();

* hibernate.cfg.xml:

* 加载:

* Configuration configuration = new Configuration().configure();

      • 2.加载映射文件:

* 第一种写法:

* configuration.addResource("cn/itcast/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包
      •  在核心配置中添加一段配置:
org.hibernate.connection.C3P0ConnectionProvider
5
20
120
3000

 

 

Session:

相当于 JDBC的 Connection

Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心

Session是线程不安全

所有持久化对象必须在 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语法,但是完全面向对象的

 

Criteria

Criteria条件查询:

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/1963942081zzx/p/6516663.html

你可能感兴趣的文章
sql基本命令-存储过程
查看>>
js面向对象(三)---组件开发
查看>>
删除 center os7 openjdk
查看>>
简要解析XMPP框架及iOS-Objective-C的使用
查看>>
【算法导论 in lambda】并归排序
查看>>
把你的旧笔记本变成 Chromebook
查看>>
Comparable与Comparator比较的区别与联系
查看>>
php 前端获取数据
查看>>
java中自定义注释@interface的用法
查看>>
Python笔记-字符串
查看>>
关于导航栏的六个小技巧
查看>>
(转载)用vs2010开发基于VC++的MFC 串口通信一*****两台电脑同一个串口号之间的通信...
查看>>
【CODEFORCES】 D. CGCDSSQ
查看>>
git 不输入用户名和密码指令
查看>>
利用javascrit获取url传递的参数
查看>>
第四周总结
查看>>
关于dom节点绑定滑动事件导致浏览器上下滑动失效解决方案--黄丕巧
查看>>
玫瑰花 星星
查看>>
building Utils {{ant+ivy}、{maven}}怎么样手动将下载下来的 JAR 包添加到 Maven、ivy 的本地仓库...
查看>>
HTML格式布局
查看>>