1. Hibernate Api分类

1)提供访问数据库的操作(如保存,更新,删除,查询)的接口。这些接口包括:Session, Transaction,,Query接口。

2)由于配置Hibernate的接口:Configuration。

3)使应用程序拦截Hibernate内部发生事件的接口,并作出相应的回应。这些接口包括:Interceptor, LoadEventListener,SaveEventListener。

4)用于扩展Hiberante功能的接口。

Hibernate内部封装了JDBC,JTA(java transaction api), JNDI(Java Naming and Directory Interface)。

2. Hibernate核心接口

1)Configuration接口

配置Hibernate, 根启动Hibernate,创建SessionFactory对象。

2)SessionFactory接口

a:初始化Hibernate,充当数据库存储源的代理,创建Session对象。
       
       b:线程安全的,一个SessionFactory对应一个数据源对象。

       c:重量级的(需要一个很大的缓存来存放预定义的SQL和映射元数据),不能随意销毁和创建。

3) Session接口

a:负责保存,更新,删除,查询对象。不是线程安全的。

   
b:不是线程安全的,应避免多个线程同时访问同一个session。

   
c:轻量级的。

4) Transaction接口

是Hibernate数据库事务接口,它对底层的事务接口做了封装,底层事务接口包括:JDBC API,JTA,CORBA API

5) Query和Criteria接口

Hibernate查询接口,用于执行数据库查询。

a:Query实例封装了一个HQL(Hibernate Query Language)查询语句,HQL与SQL查询语句类似,但是是面向对象的,使用的是类名和类的属性名,而不是表名和表

      
的属性名。

 
b: Criteria接口完全封装了基于字符串形式的查询语句,比HQL更加的面向对象,更擅长于执行动态查询。


6) 事件处理接口

当程序通过Hibernate来加载,保存,更新,删除对象时,会触发Hibernate的拦截器及事件监听器作出相应的响应。

a:事件及事件监听接口

在Hibernate api中,针对每一种事件都有相应的事件监听器,如加载对象会触发LoadEvent事件,该事件由LoadEventListener来处理。

b:Interceptor接口

用户可定义实现Interceptor接口的类,实现类负责响应持久化类的实例被加载,保存,更新,删除的时间。

7)可扩展的接口

Hibernate提供的多数功能时可配置的,允许用户选择适当的Hibernate的内置策略,如配置数据库的方言属性:Dialect

如果hibernate的内置策略无法满足要求时,hibernate孕育用户以实现接口的方式,定义客户化的策略。

a:定义主键生成策略:IdentifierGenerator接口

b:定制本地SQL方言:Dialect抽象类

c:定制缓存机制:Cache和Cache Provider接口

d:定制JDBC连接管理:ConnectionProvider

e:定制事务管理:TransactionFactory,Transaction,和TransactionManagerLookup接口

 
f:定制属性访问策略:PropertyAccessor接口

g:创建代理:ProxyFactory接口

h:定制客户化映射类型:UserType和CompositeUserType接口

hibernate学习之Hibernate API的更多相关文章

  1. Hibernate学习0.Hibernate入门

    Hibernate是什么 面向java环境的对象/关系数据库映射工具. 1.开源的持久层框架. 2.ORM(Object/Relational Mapping)映射工具,建立面向对象的域模型和关系数据 ...

  2. Hibernate学习笔记-Hibernate HQL查询

    Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...

  3. Hibernate学习之Hibernate流程

    Hibernate的核心组件 在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.properties或hibernate. ...

  4. Hibernate学习之——Hibernate环境搭建

    之前在写关于安卓闹钟的教程,写了一半就没后一半了,其实自己也没做好,在校外实习,校内毕业实习又有任务,只能先放放了,等毕业实习结束之后,在继续安卓闹钟开发之旅,相信这个时间不会很久的.现在毕业实习用到 ...

  5. Hibernate学习二----------hibernate简介

    © 版权声明:本文为博主原创文章,转载请注明出处 1.hibernate.cfg.xml常用配置 - hibernate.show_sql:是否把Hibernate运行时的SQL语句输出到控制台,编码 ...

  6. hibernate学习 六 Hibernate缓存

    缓存: 如果在集群环境下使用Hibernate时,(集群有节点A ,节点B) 当请求,发往A节点,A在数据库中修改了一条记录,然后节点B的缓存中如何实时的更新节点A修改的新数据          hi ...

  7. hibernate 学习 五 hibernate核心接口

    一 Configuration接口 Configuration对象只存在于系统的初始化阶段.配置相关. 配置文件可以使用默认的路径,也可以指定路径. Configuration config = ne ...

  8. Hibernate学习之hibernate.cfg.xml

    <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...

  9. Hibernate学习笔记-Hibernate关系映射

    1. 初识Hibernate——关系映射 http://blog.csdn.net/laner0515/article/details/12905711 2. Hibernate 笔记8 关系映射1( ...

随机推荐

  1. php中foreach()函数与Array数组经典案例讲解

    //php中foreach()函数与Array数组经典案例讲解 function getVal($v) { return $v; //可以加任意检查代码,列入要求$v必须是数字,或过滤非法字符串等.} ...

  2. centos7 systemctl grub2

    centos最小好化安装没有ifconfig命令 刚安装了centos7.0,最小化安装,发现没有ifconfig命令,虚拟机里面的网卡显示ens32,这是centos7.0的特点,要使用 ifcon ...

  3. 从文章"避免复制与粘贴"到文章"Extract Method"的反思(3)

    在牛人的博客中提到了..如果你的代码可以copy-past的时候,那么久证明你的代码出现了重复.而这种重复仅仅是虚假的代码行的增加而不是像其他的代码复用那样降级成本. copy-pase代码意味着你违 ...

  4. SqlHelper 帮助文档及详解--项目初步搭建

    微软SqlHelper类中文注释和使用方法 相关链接: http://blog.csdn.net/itmaxin/article/details/7609566 SqlHelper.cs是N年前微软出 ...

  5. MyEclipse10

    1.配置tomcat Windows->Preferences->My Eclipse->Servers->Tomcat,对于64位操作系统而言,Tomcat home dir ...

  6. Google提议使用Jsonnet来增强JSON

    Google开源了一门配置语言Jsonnet来取代JSON,它完全向后兼容并加入了一些新特性:注释.引用.算术运算.条件操作符,数组和对象内含,引入,函数,局部变量,继承等.Jsonnet程序被翻译为 ...

  7. c printf

    printf的格式控制的完整格式:% - 0 m.n l或h 格式字符下面对组成格式说明的各项加以说明:①%:表示格式说明的起始符号,不可缺少.②-:有-表示左对齐输出,如省略表示右对齐输出.③0:有 ...

  8. spring 动态数据源

    1.动态数据源:  在一个项目中,有时候需要用到多个数据库,比如读写分离,数据库的分布式存储等等,这时我们要在项目中配置多个数据库. 2.原理:   (1).spring 单数据源获取数据连接过程: ...

  9. MyEclipse配置进行Hibernate逆映射

    MyEclipse中配置MyEclipse Database Explorer 方法(以mysql 数据库为例) 前言: 之前看到同学转了一篇帖子,就是关于在MyEclipse中配置mysql的,今天 ...

  10. [置顶] linux内核启动2-setup_arch中的内存初始化(目前分析高端内存)

    上一篇微博留下了这几个函数,现在我们来分析它们         sanity_check_meminfo();         arm_memblock_init(&meminfo, mdes ...