Hibernate的五个主要接口
来源:互联网 发布:淘宝客怎么转换淘口令 编辑:程序博客网 时间:2024/05/10 07:21
Hibernate作为持久成中间件,它的具体实现对与上层调用是透明的,即上层通过接口来调用Hibernate的具体实现,所以对于入门级别的讨论来说,自然应该先从接口开始了。
所有的Hibernate应用都会访问它的5个核心接口,分别如下:
Configuration接口:
SessionFactory接口:
Session接口:
Transaction接口:
Query和Criteria接口:
分别简单介绍一下:
1、Configuration接口
Configuration用于配置并启动Hibernate。Hibernate应用通过Configuration的实例来指定对象-关系映射文件,或通过Configuration动态配置Hibernate的属性,然后通过Configuration来创建相应的 SessionFactory实例。
2、SessionFactory接口
一个SessionFactory对应一个数据源,它是个重量级对象,不可随意生成多个实例。对于一般的单数据库应用来说,只需要一个 SessionFactory就足够了。当然如果有多个数据库的话,还是需要为每个数据库生成对应的SessionFactory。它是线程安全的,同一个实例可以被应用中的多个线程共享。
也许你会很好奇,SessionFactory为什么是重量级对象呢?我也同样好奇,通过查看Hibernate的源码,发现 SessionFactory存放了大量预定义的SQL语句以及映射元数据,所以自然需要很大的缓存了,同时需要一定的CPU时间来计算生成。想想 Hibernate的这个设计是很有意义的,因为有了Mapping文件,很多SQL语句就已经确定了,只需要动态生成一次就可以了,这个设计也是为了提高持久化的效率。
3、Session接口
从SessionFactory中可以获得Session实例。
Session接口是Hibernate应用中使用最广泛的接口了,它是持久化管理器,提供添加、更新、删除、加载、查询对象。Session 不是线程安全的,所以应避免多个线程共享同一个Session实例。Session是轻量级对象,它的创建和销毁不需要太多资源,这意味着在应用中可以经常创建和销毁Session对象。
Session有一个缓存,称之为Hibernate的一级缓存,它存放当前工作单元加载的持久化对象,每个Session都有自己的缓存,缓存中的对象只能被当前工作单元访问。
4、Transaction接口
Transaction是Hibernate的数据库事务接口,它对底层道德事务接口进行了封装,底层事务接口包括:
JDBC API
JTA(Java Transaction API)
CORBA(Common Object Requet Broker Architecture) API
Hibernate应用可以通过一致Transaction接口来声明事务边界,这有助于应用可以在不同的环境或容器中移植。具体的事务实现使用在Hibernate.properties中进行指定。
5、Query和Criteria接口
这两个是Hibernate的查询接口,用于向数据库查询对象,以及控制执行查询的过程。Query实例包装了一个HQL(Hibernate Query Language)来查询。Criteria接口完全封装了基于字符串形式的查询语句,比Query更面向对象,Criteria更擅长执行动态查询。
以上为5个核心接口,当然Hibernate不仅仅只有这5个接口了,还有回调接口、映射类型接口、可扩展的接口等等,但这些接口不同于以上的5个核心接口,因为这些接口在一般的Hibernate中不一定能用到,所以暂不提及,在以后的高级应用中再做详述吧。
- Hibernate的五个主要接口
- Hibernate五个主要接口
- hibernate的五个核心接口
- Hibernate的五个核心接口
- hibernate的五个核心接口
- Hibernate的五个核心接口介绍
- Hibernate的五个核心接口介绍
- Hibernate五个核心接口的初步了解
- Hibernate应用的主要接口和类
- hibernate学习:主要的API接口
- Hibernate api 主要接口
- Hibernate---->主要接口
- hibernate中的五个核心接口
- 一、叙述Hibernate应用的主要接口和类
- ADO.NET的五个主要对象
- Hibernate的五个核心API
- Hibernate:主要的API
- hibernate主要接口和类(笔记)
- 高德地图,根据一个点的经纬度和距离得到另外一个点的经纬度的方法
- php遍历目录与文件夹的多种方法详解
- 获得Linux系统中的IP、MAC地址,广播地址,子网掩码等信息详解
- 图片出view无法显示
- myql 忘记root密码的解决办法
- Hibernate的五个主要接口
- 【Visual C++】关于无法打开包括文件:“StdAfx.h”或者意外结尾的错误解决方案
- Big Endian与Little Endian区别
- APUE读书笔记(3.0) ——第三章 文件I/O
- 链表基本操作的实现
- 在网站制作中随时可用的10个 HTML5 代码片段
- Android数据存储---SQLite
- nagiosQL访问时报错PHP message: PHP Deprecated: preg_replace(): The /e modifier is deprecated, use preg_re
- gcc头文件库文件搜索路径问题