zoukankan      html  css  js  c++  java
  • hibernate学习之Hibernate API

    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接口

  • 相关阅读:
    ApplicationContext之getBean方法详解
    Windows10终端优化方案:Ubuntu子系统+cmder+oh-my-zsh
    向 Windows 高级用户进阶,这 10 款效率工具帮你开路 | 新手问号
    Ditto —— windows 剪贴板增强小工具(复制粘贴多条记录)
    Service Mesh服务网格:是什么和为什么
    正确理解Spring事务和数据库事务和锁
    Spring中@Transactional事务回滚(含实例详细讲解,附源码)
    五分钟搞清楚MySQL事务隔离级别
    事务并发的问题场景图解
    Spring的事务管理和数据库事务相关知识
  • 原文地址:https://www.cnblogs.com/marcotan/p/4256959.html
Copyright © 2011-2022 走看看