zoukankan      html  css  js  c++  java
  • Hibernate(Control)

    案例:http://blog.csdn.net/jiuqiyuliang/article/details/39380465

    对象关系映射框架,它对JDBC进行了轻量级的对象封装,可以使用对象编程思维来操纵数据库,实现对象持久化和事务控制。

     

    Hibernate框架

    核心类和接口

      Session接口

        非线程安全,负责执行被持久化对象的CRUD操作

        save()    临时对象->持久化对象

      Session Factory接口

        负责初始化Hibernate

      Transaction接口

        可选接口,对实际事务实现的一个抽象,这些实现包括JDBC的事务、JTA 中的User Transaction、甚至可以是CORBA 事务。

      Query接口

        有两种表达方式:HQL语言或本地数据库的SQL语句。

        经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。

      Criteria接口

        同Query,轻量级,不能在Session之外使用

      Configuration类

        对Hibernate 进行配置,负责启动Hibernate,再创建一个Session Factory对象

    核心对象

    JDBC   Java DataBase Connectivity    java数据库连接

    l  是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

    l  常用类:Driver Manager、Connection、Statement / Prepared Statement / Callable Statement、Result Set

    JNDI   Java Naming and Directory Interface   Java命名和目录接口

      JNDI可访问的现有的目录及服务有:DNS、Novell目录服务、LDAP(Lightweight Directory Access Protocol轻型目录访问协议)、 CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMI、DSML v1&v2、NIS。

     

    JDO(Java Data Object)

    l  是Java对象持久化的新的规范,也是一个用于存取某种数据仓库中的对象的标准化API。

    l  JDBC只是面向关系数据库(RDBMS);JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。

    l  通过访问JDO Instance , 达到访问JDO Instance 所代表的数据对象,包括:ERP,数据库系统等,使数据的存储介质对于应用的开发人员完全透明。

    JTA(Java Transaction API)和JTS(Java Transaction Services)——为J2EE平台提供了分布式事务服务(distributed transaction)

    对比如下:

    DAO

    • l  ⒈事务划分代码被嵌入到DAO类内部
    • l  ⒉DAO类使用JDBC API来进行事务划分
    • l  ⒊调用者没有划分事务的方法
    • l  ⒋事务范围被限定在一个单一的JDBC连接

    JTA

    • l  ⒈用JTA对事务进行划分
    • l  ⒉事务划分代码被DAO分开
    • l  ⒊调用者承担划分事务的责任
    • l  ⒋DAO参与一个全局的事务中

    缓存管理

    第一级别的缓存,是Session级别的缓存,它是属于事务范围的缓存。

      当应用程序调用Session的save()、update()、saveOrUpdate()、get()或load(),以及调用查询接口的 list()、iterate()或filter()方法时,如果在Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级缓存中。

      当清理缓存时,Hibernate会根据缓存中对象的状态变化来同步更新数据库。 Session为应用程序提供了两个管理缓存的方法:

        evict(Object obj):从缓存中清除参数指定的持久化对象。

        clear():清空缓存中所有持久化对象。

    第二级别的缓存是Session Factory级别的缓存,它是属于进程范围或群集范围的缓存。

    ** 查询缓存,依赖于第二级缓存。

    延迟加载

    get不支持延迟加载,load支持延迟加载。

    查询语言

    HQL                   根据面向对象的查询语言检索对象

    导航对象图           根据已经加载的对象,导航到其他对象

    OID                   根据对象标识来检索对象

    QBC                  根据条件查询接口(Criteria 接口、Criterion 接口和Expression 类)实现对数据的检索

    原生SQL             根据数据库的SQL 查询语句检索对象

  • 相关阅读:
    testng失败截图,注解方式调用。
    HttpURLConnection和HttpClient
    JDK中的URLConnection参数详解
    如何做好Web接口测试
    selenium webdriver定位不到元素的五种原因及解决办法
    Selenium(Webdriver)自动化测试常问到的问题解答(转自:潜龙0318)
    常用网址记录
    python set
    python 浅拷贝和深拷贝
    python 元组
  • 原文地址:https://www.cnblogs.com/sweetyu/p/5626350.html
Copyright © 2011-2022 走看看