hibernate核心接口,和扩展接口。回顾笔记,以前没记,现在补上,纯手工敲的。
hibernate核心接口:
所有的hibernate应用都会访问hibernate的5个核心接口
1,Configuration接口
Configuration用于配置并且根启动Hibernate。Hibernate应用通过Configuration实例来获取对象-关系映射文件中的元数据,以及动态配置Hibernate的属性,然后创建SessionFactory实例。
2,SessionFactory接口
一个SessionFactory实例对应一个数据存储源,应用从SessionFactory中获得Session示例。
SessionFactory有以下特点
- 它是线程安全的,这意味着它的一个实例可以被应用中的多个线程共享。
- 它是重量级的,这意味着不能随意创建和销毁它的实例。如果应用只访问一个数据库,只需要创建一个SessionFactory实例,在应用初始化的时候创建该实例。如果应用同时访问多个数据库,则需要为每个数据库创建一个单独的SessionFactory。之所以称它是重量级的,是因为它需要一个很大的缓存,用来存放预定于的SQL语句以及映射元数据等。用户还可以为是因为它SessionFactory配置一个缓存插件,这个缓存插件被称为Hibernate的第二级缓存,该缓存用来存放被工作单元读过的数据。将来其他工作单元可能会重用这鞋数据,因此,这个缓存中的数据能够被所有工作单元共享。一个工作单元通常对应一个数据库事物。
3,Session接口
Session接口是Herbernate应用使用最广泛的接口。也被称为持久化管理器,它提供了持久化相关的操作,即:增删改查操作。
Session有以下特点:
- 不是线程安全的,因此,应该避免多个线程共享同一个Session实例。
- Session实例是轻量级的。它的创建和销毁不需要消耗太多资源。这意味着在程序中可以经常创建或销毁Session对象,如为每个客户请求分配单独的Session实例。
Session有一个缓存,被称为Hibernate的第一级缓存,它存放被当前工作单元加载的对象。每个Session实例都有自己的缓存,这个Session实例的缓存只能被当前的工作单元访问。
4,Transaction接口
Transaction接口是Hibernate的数据库事务接口,它对底层的事务接口做了封装,底层事务接口包括:
- JDBC API
- JTA(Java Transaction API)
- COBRA (Common Object Request Broker Architecture) API
Hibernate应用可通过一致的Transaction接口来申明事务边界,这有助于应用在不同的环境或容器中移植。
5,Query和Criteria接口
Query和Criteria接口是Hibernate的查询接口,用于向数据库查询对象,以及控制执行查询的过程。Query实例包装了一个HQL(Hibernate Query Language)查询语句,HQL查询语句与SQL查询语句有些相似,但HQL查询语句是面向对象的,它引用类名及类的属性名,而不是表名或表的字段名。Criteria接口完全封装了基于字符串形式的查询语句,比Query接口更加面向对象,Criteria接口擅长于执行动态查询。
hibernate扩展接口:
1,事件处理接口
当程序通过Hibernate来加载、保存、更新或删除对象时,会触发Hibernate的拦截器及事件监听器,做出响应的处理:
- 事件及事件监听接口:在Hibernate API,针对每一种事件都有相应的事件监听器。比如:
加载对象会触发org.hibernate.event.LoadEvent事件,该事件由org.hibernate.event.LoadEventListener监听器处理。
保存对象会触发org.hibernate.event.saveEvent事件,该事件由org.hibernate.event.SaveEventListener监听器处理。
- org.hibernate.Interceptor接口:应用程序可以实现Interceptor接口的类。Interceptor实现类负责响应持久化类的实例被加载、保存、更新或删除的事件。
2,Hibernate映射类型接口
org.hibernate.type.Type接口表示Hibernate映射类型,用于把域对象映射为数据库的关系数据。Hibernate为Type接口提供了各种实现类,它们代表具体的Hibernate映射类型,例如:
- PrimitiveType类:映射Java基本类型,PrimitiveType类包括“ByteType、ShortType、IntegerType、LongType、FloatType、DoubleType、CharacterType和BooleanType这八个子类”。
- DateType:映射Java日期类型。
- BinaryType:映射Byte[]类型。
hibernate核心接口,和扩展接口。回顾笔记,以前没记,现在补上,纯手工敲的。的更多相关文章
- org.hibernate.MappingException: Unknown entity常见问题。回顾笔记,以前没记,现在补上,xiaochao写的蛮好的直接给转载了。
转自http://www.blogjava.net/xiaochao/articles/hibernatetopic.html. 官方说明如下: Hibernate遵循EJB3.0实体bean的注解规 ...
- Hibernate核心接口和工作原理
Hibernate核心接口和工作原理 Hibernate有五大核心接口,分别是:Session .Transaction .Query .SessionFactory .Configuration . ...
- Asp.net 面向接口可扩展框架之核心容器(含测试代码下载)
新框架的容器部分终于调通了!容器实在太重要了,所以有用了一个名词叫“核心容器”. 容器为什么那么重要呢?这个有必要好好说道说道. 1.首先我们从框架名称面向接口编程说起,什么是面向接口编程?(这个度娘 ...
- Hibernate详解(5)——Hibernate核心接口和工作原理
Hibernate核心接口 Hibernate有五大核心接口,分别是:Session Transaction Query SessionFactoryConfiguration .这五个接口构成了Hi ...
- Java开发笔记(五十九)Java8之后的扩展接口
前面介绍了接口的基本用法,有心的朋友可能注意到这么一句话“在Java8以前,接口内部的所有方法都必须是抽象方法”,如此说来,在Java8之后,接口的内部方法也可能不是抽象方法了吗?之所以Java8对接 ...
- Hibernate核心类和接口具体介绍
一.hiobernate核心类和接口预览图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGxnZW4xNTczODc=/font/5a6L5L2T/fo ...
- 深入解析Hibernate核心接口
Hibernate有很多值得学习的地方,这里我们主要介绍Hibernate核心接口,包括介绍SessionFactory接口.Query和Criteria接口等方面. Session 接口对于Hibe ...
- Hibernate核心接口
1.Configuration接口 Configuration负责管理Hibernate的配置信息. 2,SessionFactory接口 SessionFactory负责创建Session实例,能够 ...
- Spring8:一些常用的Spring Bean扩展接口
前言 Spring是一款非常强大的框架,可以说是几乎所有的企业级Java项目使用了Spring,而Bean又是Spring框架的核心. Spring框架运用了非常多的设计模式,从整体上看,它的设计严格 ...
随机推荐
- mybatis-spring
现成的中文文档 首先,项目依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifa ...
- log4j 异步日志问题分析
1. 常用的DailyRollingFileAppender与RollingFileAppender是否同步? 1.1 代码分析 2. log4j 1.2.x提供了异步appender是什么?Asyn ...
- Java基础之一组有用的类——生成日期和时间(TryDateFormats)
控制台程序. java.util包中含有相当多的类涉及日期和时间,包括Date类.Calendar类和GregorianCalendar类. Date类对象其实定义了精确到毫秒的时刻,从1970年1月 ...
- linux:习惯
1>.系统里面必须最少有两个账号,一个root,一个普通账户; 2>.平时登录系统均使用普通账户登录,除非需要配置或者执行特殊命令才切换至root; 3>.linux系统下严格区分大 ...
- zepto和jquery的区别,zepto的不同使用8条小结 会JS就会zepto
1. Zepto 对象 不能自定义事件 例如执行: $({}).bind('cust', function(){}); 结果: TypeError: Object has no method 'ad ...
- fzu 2146 Easy Game
http://acm.fzu.edu.cn/problem.php?pid=2146 Problem 2146 Easy Game Accept: 661 Submit: 915Time Li ...
- 数据库SQL CRUD
1.删除表 drop table +表名 2.修改表 alter table+表名+ add(添加)+列名+ int(类型) alter table+表名+ drop(删除)+column(列) ...
- spark standalone zookeeper HA部署方式
虽然spark master挂掉的几率很低,不过还是被我遇到了一次.以前在spark standalone的文章中也介绍过standalone的ha,现在详细说下部署流程,其实也比较简单. 一.机器 ...
- 夺命雷公狗---node.js---14之DNS
node下如果想域名解析是需要通过apache或者ng的反向版定才可以实现的,但是他也给我们留下了哟套DNS操作方法: /** * Created by leigood on 2016/8/30. * ...
- 夺命雷公狗ThinkPHP项目之----企业网站18之网站配置列表页的完成
我们点击下配置列表即可查看我们列表页的配置信息了: 其实这个最简单了,首先我们先来完成他控制器的代码: public function lists(){ $mod = M('Conf')->se ...