`

从Hibernate中获得JDBC连接

阅读更多

原文:http://apps.hi.baidu.com/share/detail/58559688   只作收藏

使用Hibernate的过程中,有时候需要直接使用SQL语句来操作数据库(虽然Hibernate不推荐使用, 但是有时候还是会使用到的,比如说批处理),这个时候就要求我们首先获得JDBC的连接。获得JDBC连接的方式有:

1、先获得Session,然后从Session中获得连接

     session.connection();

     但是这个方法Hibernate不推荐使用,The method connection() from the type Session is deprecated

 

2、通过ConnectionProvider来获得连接

     ConnectionProvider cp =

                  ConnectionProviderFactory.newConnectionProvider       (cfg.getProperties());

     cp.getConnection();

    这样也可以获得连接。但是实验后发现,通过JDBC连接插入的数据,然后通过Hibernate获取不到。查看数据库发现数据已经插入到了数据库中,另外 Hibernate重新加载后也可以看到刚才插入的数据。

      刚开始的时候,以为是Hibernate二级缓存的原因,但是把Hibernate的二级缓存关掉以后,任然有这个问题。经过多方查找,最后在 Hibernate的官方找到了解决办法,如下:

       ConnectionProvider cp =

                    ((SessionFactoryImplementor)sessionFactory).getConnectionProvider();

    就是直接从SessionFactory 中获得ConnectionProvider ,而不是自己创建一个。自己猜想原因应该是通过SessionFactory获得的连接和自己构造ConnectionProvider 来获得的连接应该是独立的,所以导致通过JDBC插入的数据在Hibernate下看不到。

分享到:
评论

相关推荐

    hibernate 配置 C3P0 连接池

    C3P0则是一个强大的、开源的JDBC连接池实现,它提供了对数据库连接的高效管理和复用,能够显著提高数据访问效率,减少数据库连接创建和销毁带来的开销。通过合理的配置,C3P0能够根据应用的实际需求动态调整连接池的...

    Hibernate配置数据库连接

    通过 Hibernate,开发者可以避免大量繁琐的 JDBC 编码工作,同时还能获得性能优化方面的诸多好处。 #### 二、配置数据库连接的重要性 配置数据库连接是使用 Hibernate 进行数据库操作的基础步骤。正确地配置数据库...

    Hibernate里配置第三方数据库连接池

    当应用程序需要与数据库交互时,它会从连接池中获取一个已建立的连接,使用完毕后再归还到池中,而不是直接关闭。这样不仅减少了数据库连接创建和销毁的开销,还能够实现连接的复用,提高系统性能。 **Proxool是...

    Hibernate+中文文档

    3.3. JDBC连接 3.4. 可选的配置属性 3.4.1. SQL方言 3.4.2. 外连接抓取(Outer Join Fetching) 3.4.3. 二进制流 (Binary Streams) 3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的替换 3.4.6. Hibernate的统计...

    Hibernate5中文用户使用手册

    Fetching(抓取):抓取是指Hibernate如何从数据库中获取数据。包括基础抓取知识和应用抓取策略,例如通过查询和配置文件动态抓取数据。 批处理:Hibernate支持JDBC批处理,以提高批量数据操作的性能。 缓冲:讲解...

    connect to Oracle using JDBC

    在本文中,我们将深入探讨如何使用JDBC连接到Oracle数据库,并执行基本的增删改查(CRUD)操作。 首先,确保你已经安装了Oracle数据库客户端和相应的驱动程序,如ojdbc.jar。这个驱动程序是Java应用程序连接到...

    jdbc java 连接sql server 教程

    在本教程中,我们将深入理解如何使用JDBC连接到SQL Server数据库。 ### 1. JDBC-ODBC桥连接SQL Server库 在没有特定数据库驱动的情况下,JDBC可以通过JDBC-ODBC桥来连接SQL Server。这种方法相对简单,但效率较低...

    hibernate 3.2中文手册 中文文档

    ### Hibernate 3.2中文手册知识点汇总 #### 第1章:Hibernate入门 - **1.1 前言** - 介绍了Hibernate的基本...这些知识点涵盖了从Hibernate的基本使用到高级配置和技术细节,有助于深入理解和掌握Hibernate框架。

    hibernate3.2中文文档(chm格式)

    3.3. JDBC连接 3.4. 可选的配置属性 3.4.1. SQL方言 3.4.2. 外连接抓取(Outer Join Fetching) 3.4.3. 二进制流 (Binary Streams) 3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的替换 3.4.6. Hibernate的统计...

    HIbernate连接池配置总结基于第三方c3p0和proxool

    连接池在初始化时会创建一定数量的连接,当应用程序需要数据库连接时,会从池中获取,使用完毕后归还,而不是真正关闭。 2. **Hibernate支持的第三方连接池** - **C3P0**:由M-Fabrice提供的开源连接池实现,具备...

    Hibernate Developer Guide

    在Hibernate中,通过SessionFactory创建Session时,会自动创建JDBC连接。也可以手动获取连接,但通常不推荐这样做。 ###### 1.2 连接池 为了提高性能并减少资源消耗,Hibernate使用了连接池来管理JDBC连接。常见的...

    Hibernate电子书(全)

    这些映射策略使得复杂的关联关系能够在Hibernate中得到清晰的表示。 #### 延迟加载(LazyInitialization) 延迟加载是一种优化技术,允许Hibernate在真正需要的时候才加载关联的对象,从而减少了不必要的数据库访问...

    C3P0是一个开放源代码的JDBC连接池用hhs框架开发用的得到的 挺好的

    C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。

    hibernate连接oracle数据库.doc

    1. 获取 Hibernate 类库和 JDBC 驱动:首先,你需要从 Hibernate 官方网站下载 Hibernate 的最新版本,例如这里的 3.0 版本。同时,针对 Oracle 数据库,你需要从 Oracle 安装目录下的 \ora92\jdbc 获得对应的 JDBC ...

    JDBC所用到的MySQL/Oracle等数据库jar包

    在实际开发中,为了更高效、安全地使用JDBC,通常会使用ORM框架,如Hibernate或MyBatis,它们提供了更高级别的抽象,简化了数据库操作。 总结来说,本压缩包中的`mysql-connector-java-5.1.19-bin.jar`和`classes12...

Global site tag (gtag.js) - Google Analytics