原文: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下看不到。
分享到:
相关推荐
C3P0则是一个强大的、开源的JDBC连接池实现,它提供了对数据库连接的高效管理和复用,能够显著提高数据访问效率,减少数据库连接创建和销毁带来的开销。通过合理的配置,C3P0能够根据应用的实际需求动态调整连接池的...
通过 Hibernate,开发者可以避免大量繁琐的 JDBC 编码工作,同时还能获得性能优化方面的诸多好处。 #### 二、配置数据库连接的重要性 配置数据库连接是使用 Hibernate 进行数据库操作的基础步骤。正确地配置数据库...
当应用程序需要与数据库交互时,它会从连接池中获取一个已建立的连接,使用完毕后再归还到池中,而不是直接关闭。这样不仅减少了数据库连接创建和销毁的开销,还能够实现连接的复用,提高系统性能。 **Proxool是...
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的统计...
Fetching(抓取):抓取是指Hibernate如何从数据库中获取数据。包括基础抓取知识和应用抓取策略,例如通过查询和配置文件动态抓取数据。 批处理:Hibernate支持JDBC批处理,以提高批量数据操作的性能。 缓冲:讲解...
在本文中,我们将深入探讨如何使用JDBC连接到Oracle数据库,并执行基本的增删改查(CRUD)操作。 首先,确保你已经安装了Oracle数据库客户端和相应的驱动程序,如ojdbc.jar。这个驱动程序是Java应用程序连接到...
在本教程中,我们将深入理解如何使用JDBC连接到SQL Server数据库。 ### 1. JDBC-ODBC桥连接SQL Server库 在没有特定数据库驱动的情况下,JDBC可以通过JDBC-ODBC桥来连接SQL Server。这种方法相对简单,但效率较低...
### Hibernate 3.2中文手册知识点汇总 #### 第1章:Hibernate入门 - **1.1 前言** - 介绍了Hibernate的基本...这些知识点涵盖了从Hibernate的基本使用到高级配置和技术细节,有助于深入理解和掌握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的统计...
连接池在初始化时会创建一定数量的连接,当应用程序需要数据库连接时,会从池中获取,使用完毕后归还,而不是真正关闭。 2. **Hibernate支持的第三方连接池** - **C3P0**:由M-Fabrice提供的开源连接池实现,具备...
在Hibernate中,通过SessionFactory创建Session时,会自动创建JDBC连接。也可以手动获取连接,但通常不推荐这样做。 ###### 1.2 连接池 为了提高性能并减少资源消耗,Hibernate使用了连接池来管理JDBC连接。常见的...
这些映射策略使得复杂的关联关系能够在Hibernate中得到清晰的表示。 #### 延迟加载(LazyInitialization) 延迟加载是一种优化技术,允许Hibernate在真正需要的时候才加载关联的对象,从而减少了不必要的数据库访问...
C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。
1. 获取 Hibernate 类库和 JDBC 驱动:首先,你需要从 Hibernate 官方网站下载 Hibernate 的最新版本,例如这里的 3.0 版本。同时,针对 Oracle 数据库,你需要从 Oracle 安装目录下的 \ora92\jdbc 获得对应的 JDBC ...
在实际开发中,为了更高效、安全地使用JDBC,通常会使用ORM框架,如Hibernate或MyBatis,它们提供了更高级别的抽象,简化了数据库操作。 总结来说,本压缩包中的`mysql-connector-java-5.1.19-bin.jar`和`classes12...