`
hmx1388
  • 浏览: 37348 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

org.hibernate.connection包的主要封装了通过JDBC来连接数据库的操作

阅读更多
org.hibernate.connection包的主要封装了通过JDBC来连接数据库的操作,用户可以以数据源的方式,或者通过特定数据库驱动的方式,甚至是自己定义连接类的方式来完成数据库的连接操作,包下面的代码文件并不多,只有5个,分别是ConnectionProviderFactory.java,ConnectionProvider.java,DriverManagerConnectionProvider.java,DatasourceConnectionProvider.java,UserSuppliedConnectionProvider.java,其中ConnectionProvider是一个接口,DriverManagerConnectionProvider、DatasourceConnectionProvider、UserSuppliedConnectionProvider分别继承了这个接口,而ConnectionProviderFactory则是一个工厂类,他的主要作用是调用ConnectionProvider接口,而不关心接口的具体实现是DriverManagerConnectionProvider或者DatasourceConnectionProvider还是UserSuppliedConnectionProvider。

    首先来看ConnectionProvider接口,提供了如下几个方法:   

1.configure()方法主要是根据配置文件来初始化所有的连接信息。   

2.getConnection()方法抓取一个连接。   

3.closeConnection(Connection conn)方法关闭某个特定连接。   

4.close()关闭所有连接。   

5.supportsAggressiveRelease()方法和hibernate.connection.release_mode配置参数有关,该参数用来指定使用哪一种连接释放模式。HIBERNATE参考手册是这样描的:     Hibernate关于JDBC连接管理的旧(2.x)行为是,Session在第一次需要的时候获取一个连接,在session关闭之前一直会持有这个连接。Hibernate引入了连接释放的概念,来告诉session如何处理它的JDBC连接。注意,下面的讨论只适用于采用配置ConnectionProvider来提供连接的情况,用户自己提供的连接与这里的讨论无关。通过org.hibernate.hibernate.connection.release_mode的不同枚举值来使用不用的释放模式:    

     ON_CLOSE - 基本上就是上面提到的老式行为。Hibernate session在第一次需要进行JDBC操作的时候获取连接,然后持有它,直到session关闭。

     AFTER_TRANSACTION - 在org.hibernate.Transaction结束后释放连接。

     AFTER_STATEMENT (也被称做积极释放) - 在每一条语句被执行后就释放连接。但假若语句留下了与session相关的资源,那就不会被释放。目前唯一的这种情形就是使用org.hibernate.ScrollableResults 

     auto(默认) - 这一选择把释放模式委派给org.hibernate.transaction.TransactionFactory.getDefaultReleaseMode()方法。对JTATransactionFactory来说,它会返回hibernate.connection.release_mode.AFTER_STATEMENT;对JDBCTransactionFactory来说,则是hibernate.connection.release_mode.AFTER_TRANSACTION。很少需要修改这一默认行为,因为假若设置不当,就会带来bug,或者给用户代码带来误导。

     on_close - 使用 hibernate.connection.release_mode.ON_CLOSE. 这种方式是为了向下兼容的,但是已经完全不被鼓励使用了。

     after_transaction - 使用hibernate.connection.release_mode.AFTER_TRANSACTION。这一设置不应该在JTA环境下使用。也要注意,使用hibernate.connection.release_mode.AFTER_TRANSACTION的时候,假若session 处于auto-commit状态,连接会像AFTER_STATEMENT那样被释放。

     after_statement - 使用hibernate.connection.release_mode.AFTER_STATEMENT。除此之外,会查询配置的ConnectionProvider,是否它支持这一设置((supportsAggressiveRelease()))。假若不支持,释放模式会被设置为hibernate.connection.release_mode.AFTER_TRANSACTION。只有在你每次调用ConnectionProvider.getConnection()获取底层JDBC连接的时候,都可以确信获得同一个连接的时候,这一设置才是安全的;或者在auto-commit环境中,你可以不管是否每次都获得同一个连接的时候,这才是安全的。也就是说supportsAggressiveRelease()返回false的时候,释放模式会被设置为hibernate.connection.release_mode.AFTER_TRANSACTION。如果返回true,只表示它支持使用hibernate.connection.release_mode.AFTER_STATEMENT这一个设置,并不表示一定使用这个设置,请注意。
分享到:
评论

相关推荐

    java 使用jdbc封装连接数据库

    本教程将重点讲解如何通过简单的封装来实现对MySQL数据库的连接。 首先,理解JDBC的核心概念: 1. **驱动管理**:在连接数据库前,需要加载并注册相应的数据库驱动。对于MySQL,我们需要引入`mysql-connector-java`...

    使用JDBC操作数据库

    本篇文章将详细阐述如何使用JDBC来操作数据库。 首先,我们需要了解JDBC的核心组件。JDBC API主要包括以下部分: 1. **Driver Manager**:这是Java应用程序与数据库驱动程序之间的桥梁。它负责加载和管理符合JDBC...

    JDBC连接数据库的步骤

    总结,JDBC连接数据库的步骤主要包括加载驱动、创建连接、准备SQL语句、执行SQL和处理结果。而Spring的JdbcTemplate提供了一种优雅的方式,帮助开发者更高效地处理数据库操作,降低了出错的可能性,提高了代码质量。

    JDBC 数据库连接和操作的封装

    本文将详细介绍如何通过封装JDBC连接和操作来简化代码,并降低系统之间的耦合度。 #### 二、原始编码方式 最开始接触JDBC时,可能使用的是较为原始的方式:每次执行数据库操作时都手动创建连接、执行SQL语句并关闭...

    hibernate环境搭建基本操作封装

    在IT行业中,Hibernate是一个非常流行的Java对象关系映射(ORM)框架,它简化了数据库与Java应用程序之间的数据交互...通过理解并实践上述步骤,你可以有效地管理和操作数据库,同时享受到Hibernate带来的便捷和效率。

    java使用JDBC和ODBC连接oracle数据库

    Java通过JDBC(Java Database Connectivity)和ODBC(Open Database Connectivity)来连接Oracle数据库是两种常见的数据访问方式。本文将详细介绍这两种方法,并提供相关的技术知识。 首先,JDBC是Java平台的标准...

    jdbc_Hibernate总结

    在实例化驱动时,通常有三种方法:通过DriverManager.registerDriver直接注册、设置系统属性`jdbc.drivers`或者使用`Class.forName`来加载驱动类。其中,`Class.forName`方法虽然不直接创建Driver实例,但将类加载到...

    java封装jdbc的操作代码

    封装JDBC操作代码是为了提高代码的复用性,减少重复工作,并且能够更好地管理和控制数据库连接,避免资源泄露。下面我们将详细探讨这个主题。 1. **JDBC基础概念** JDBC是Java API的一部分,它提供了连接数据库、...

    创建hibernate的连接池及封装bean类的方式(图解)

    通过使用Hibernate,开发者可以更加高效地进行数据库操作,同时也能更好地管理数据库连接资源。本文将详细介绍如何在Java中创建Oracle数据库的连接池以及如何封装Bean类的方法。 #### 二、创建Oracle数据库连接池 ...

    达梦数据库JDBC

    对于hibernate5.0系列,由于其内部已经封装了JDBC,因此只要配置好相应的数据库连接参数,也能顺利与达梦数据库进行通信。 在实际开发中,为了提高性能和减少资源消耗,建议使用连接池来管理数据库连接,例如Apache...

    数据库连接池以及hibernate对各种连接池的整合

    <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider <!-- 其他C3P0相关配置 --> </hibernate-configuration> ``` 总之,数据库连接池在Java和Hibernate应用中扮演着...

    JDBC数据库连接规范

    JDBC API虽然强大,但直接使用可能会涉及大量的重复代码,因此在实际项目中,开发者往往会选择ORM框架,如Hibernate、MyBatis等,它们将JDBC进行了封装,提供了更加高级且易于使用的API,降低了数据库操作的复杂性。...

    hibernate3.2官方源代码

    Query接口提供了SQL查询的ORM映射,使得开发者能用面向对象的方式来操作数据库。 2. **持久化模型:** - Hibernate通过AnnotationProcessor和XML配置解析,实现了对象到数据库表的映射。在`org.hibernate.cfg`包中...

    JDBC与Java数据库程序设计

    在实际开发中,为提高代码可读性和复用性,通常会使用DAO(数据访问对象)模式封装JDBC操作。另外,还有许多优秀的ORM(对象关系映射)框架,如Hibernate和MyBatis,它们简化了JDBC的使用,提供了更高的抽象层。 ...

    JDBC封装.rar

    通过以上介绍,我们可以理解JDBC封装是Java开发中提升数据库操作效率和代码质量的关键步骤,它使得开发者能够更专注于业务逻辑,而非繁琐的数据库操作细节。在实际项目中,根据具体需求,可以对封装方式进行适当的...

    全面解析JDBC--连接数据库

    **全面解析JDBC——连接数据库** Java数据库连接(JDBC)是Java开发人员与各种数据库进行交互的关键技术。它是Sun Microsystems(现为Oracle Corporation的一部分)为Java平台开发的一个标准API,使得Java应用程序...

    各种数据库在JDBC中的连接方法

    ### 各种数据库在JDBC中的连接方法 #### 一、引言 Java Database Connectivity (JDBC) 是一种用于执行 SQL 语句的 Java API,它...了解这些基础知识可以帮助开发者更好地管理和操作数据库,提高应用程序的性能和效率。

    Java数据库操作封装类

    "Java数据库操作封装类"的设计往往借鉴了如JDBC(Java Database Connectivity)、Hibernate、MyBatis等主流类库的思想。JDBC是Java中标准的数据库访问接口,它提供了与各种数据库通信的能力,但其API较为底层,使用...

    JDBC编程!java中的数据库连接!源代码!适合初学者!

    JDBC的主要作用是在Java程序与数据库之间建立连接,实现数据的存取操作。 JDBC编程的主要步骤如下: 1. 加载驱动:在程序中使用Class.forName()方法加载数据库对应的驱动类。 2. 创建连接:通过DriverManager.get...

    jdbc操作oracle数据库

    总的来说,JDBC是Java与数据库交互的重要工具,通过理解其基本原理和操作流程,我们可以高效地对Oracle数据库进行增、删、改、查等操作。在实际项目中,还需要注意事务管理、错误处理以及性能优化等方面的问题,以...

Global site tag (gtag.js) - Google Analytics