环境:tomcat6+ hibernate2.1.jar
问题:在使用tomcat6自带的dbcp的jar包(tomcat-dbcp.jar,其中已经包含了commons-collections.jar,
commons-dbcp.jar, commons-pool.jar)来配置dbcp数据库连接池出现了各种莫名其妙的问题
解决:使用hibernate2.1自带的 commons-collections.jar,commons-dbcp.jar, commons-pool.jar来替换tomcat-dbcp.jar就ok了
1.jndi与dbcp有什么关系?
jndi是不是也是数据库连接池呢?--不是
不使用dbcp只是用jndi会出现什么情况呢?hibernate中也可以连接数据库
dbcp与c3p0是hibernate推荐使用的
在tomcat的context.xml下,添加
--dbcp连接池配置,这种方式配置可以使用JDNI <Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="produsr" password="prod_777" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@10.72.240.31:1522:ffv2prod" factory="org.apache.commons.dbcp.BasicDataSourceFactory" --必须 />
在hibernate.cfg.xml中配置
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.datasource">java:comp/env/jdbc/test</property> <mapping resource="com/hsp/config/Cat.hbm.xml" /> <!-- 注释掉了 start <property name="connection.provider_class">net.sf.hibernate.connection.DBCPConnectionProvider</property> <property name="connection.url">jdbc:oracle:thin:@10.72.240.31:1522:ffv2prod</property> <property name="connection.provider_class">net.sf.hibernate.connection.DBCPConnectionProvider</property> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="connection.username">produsr</property> <property name="connection.password">prod_777</property> end--> </session-factory> </hibernate-configuration>
编写hibernateUtil工具类
package com.hsp.util; import java.io.File; import java.net.URL; import net.sf.hibernate.HibernateException; import net.sf.hibernate.Session; import net.sf.hibernate.SessionFactory; import net.sf.hibernate.cfg.Configuration; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class HibernateUtil { private static Log log = LogFactory.getLog(HibernateUtil.class); private static SessionFactory sessionFactory = null; static{ //create the SessionFactory try { /*1.配置读取"hibernate.cfg.xml"配置文件,默认读取时src目录下的 *2.hibernate.cfg.xml配置文件可以放置mapping,使用hibernate.properties配置 * 文件不行。hibernate.cfg.xml不是必须的 */ sessionFactory = new Configuration().configure("/hibernate.cfg.xml").buildSessionFactory(); } catch (HibernateException e) { log.error("Initial SessionFactory creation failed", e); throw new ExceptionInInitializerError(e); } } public static final ThreadLocal session = new ThreadLocal(); public static Session currentSession() throws HibernateException{ Session s = (Session)session.get(); if(s == null){ s = sessionFactory.openSession(); session.set(s); } return s; } public static void closeSession() throws HibernateException{ Session s = (Session)session.get(); session.set(null); if(s != null){ s.close(); } } }
相关推荐
综上所述,这个文档主要讲述了如何在Tomcat服务器上,通过Hibernate和JNDI数据源配置,使用DBCP连接池连接MySQL数据库。尽管Hibernate官方并不推荐使用DBCP,但文档仍然提供了详细的配置步骤,包括环境准备、数据库...
4. 配置数据源:在Spring配置文件中配置数据源,如JNDI数据源或Apache DBCP,使Spring能够管理数据库连接。 5. 测试:编写单元测试和集成测试,确保各个组件能够正常工作,没有冲突和错误。 在实际项目中,还需要...
在XML配置中,可以使用`<jee:jndi-lookup>`标签从JNDI查找数据源,或者使用`<bean>`标签创建一个`org.apache.commons.dbcp.BasicDataSource`或`org.springframework.jdbc.datasource.DriverManagerDataSource`类型的...
(1) 提供支持三种数据源方案:C3P0、DBCP、JNDI,三选一,请注释或删除其他方案 (2) 提取四种Hibernate整合方案:四选一,请注释或删除其他方案 (3) 提供两种声明式事务管理器方案:二选一,请注释或删除其他...
5. 数据源配置:在Spring配置文件中,配置DataSource,可以使用DBCP、C3P0等连接池,或者使用JNDI查找数据源。 6. 事务管理:Spring 提供了声明式事务管理,可以在配置文件中声明事务边界,由Spring自动管理事务的...
3. `hibernate.jndi.class` 和 `hibernate.jndi.url`:在非 App Server 环境下,通过 JNDI 访问远程数据库时,需要配置这些属性来指定 JNDI 初始化上下文工厂类和 URL。 ### 连接池的选择与配置 默认的 Hibernate ...
本文将详细阐述如何在Hibernate 3.2中配置和使用连接池,包括C3P0、DBCP和通过JNDI从容器获取连接池。 1. **使用Hibernate自带的连接池** Hibernate 3.2虽然自带了一个连接池,但由于性能和稳定性问题,官方并不...
官方建议如果在Hibernate3中必须使用DBCP,最好通过JNDI(Java Naming and Directory Interface)方式进行配置,以避免潜在的问题。 其次,Hibernate内置的连接池虽然方便,但在性能和稳定性上并不理想,尤其是在...
如果你因为某种原因需要在Hibernate3中使用DBCP,建议采用JNDI方式。 二、默认情况下(即没有配置连接池的情况下),Hibernate会采用内建的连接池。但这个连接池性能不佳,且存在诸多BUG(笔者就曾在Mysql环境下被八...
本篇将详细介绍如何在Tomcat下配置JNDI,以便于多个组件共享数据库连接池,例如在Hibernate框架中使用。 首先,我们需要理解Tomcat中的JNDI配置。JNDI允许我们将资源(如数据源)注册到一个全局命名空间中,这样...
- **配置DataSource**:定义数据源,可以使用Spring的`DataSource`实现,如`BasicDataSource`或JNDI数据源。 - **配置SessionFactoryBean**:将DataSource与Hibernate配置文件链接起来,并设置其他属性如缓存策略...
本文将详细介绍如何在Hibernate中使用Tomcat的内置连接池DBCP(Database Connection Pool)。 首先,Tomcat的连接池配置是在`server.xml`文件中进行的。在`<Context>`标签内,我们需要添加一个名为`jdbc/quickstart...
- **3.2 配置数据源**:Spring 支持多种数据源配置方式,包括JNDI、C3P0、DBCP等。 - **步骤**: 1. 在Spring配置文件中定义数据源。 2. 配置连接池参数。 - **3.3 配置SessionFactory**:SessionFactory 是 ...
如果由于某些原因需要使用DBCP,官方建议通过JNDI(Java Naming and Directory Interface)方式进行配置,以避免直接在Hibernate配置文件中使用。 默认情况下,Hibernate会使用一个内置的连接池。尽管简单易用,但...
4.DBCP 连接配置(JNDI方式) 由于Hibernate3不推荐使用DBCP,以下配置仅供参考。在应用服务器如Tomcat中配置JNDI数据源后,Hibernate配置如下: <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-...
然而,由于Hibernate 3.0之后不再直接支持DBCP,所以现在更倾向于使用其他如C3P0或HikariCP等连接池。 除了C3P0和DBCP,还有其他流行的数据库连接池实现,比如HikariCP,它以其高性能和低延迟著称,通常被认为是...
配置DBCP时,同样在`hibernate.cfg.xml`文件中指定相关参数,如`maxActive`、`minIdle`等。 3. **HikariCP连接池**: HikariCP是目前公认的性能最佳的连接池,它的设计目标是极低的空闲连接内存占用,极快的连接...
在企业级应用中,通常使用像Apache Commons DBCP或C3P0这样的连接池来提高性能和资源利用率。配置这个属性时,我们需要指定数据源的类名或者JNDI名称(在应用服务器中)。 2. `hibernate.hbm2ddl.auto`: 这个属性...
如果在Hibernate 3环境中必须使用DBCP,官方建议通过JNDI(Java Naming and Directory Interface)方式进行配置,以避免直接依赖特定的连接池实现。 2. **Hibernate内置连接池**: - 当未配置任何连接池时,...
3. **配置DataSource**:定义数据源Bean,这通常是连接到数据库所需的配置,如JNDI数据源或Apache DBCP数据源。 4. **配置TransactionManager**:为了实现事务管理,你需要配置HibernateTransactionManager。Spring...