`
weigang.gao
  • 浏览: 491436 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

hibernate+jndi+dbcp

 
阅读更多

环境: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();
		}
	}
	

}

 

分享到:
评论

相关推荐

    用dbcp连接池,mysql数据库,在tomcat服务器下,通过hibernate配置jndi数据源.doc

    综上所述,这个文档主要讲述了如何在Tomcat服务器上,通过Hibernate和JNDI数据源配置,使用DBCP连接池连接MySQL数据库。尽管Hibernate官方并不推荐使用DBCP,但文档仍然提供了详细的配置步骤,包括环境准备、数据库...

    struts2+hibernate+spring_jar包整合

    4. 配置数据源:在Spring配置文件中配置数据源,如JNDI数据源或Apache DBCP,使Spring能够管理数据库连接。 5. 测试:编写单元测试和集成测试,确保各个组件能够正常工作,没有冲突和错误。 在实际项目中,还需要...

    SSH (Struts2+Spring3+Hibernate3) +Proxool_亲测成功 费大劲了.zip

    在XML配置中,可以使用`&lt;jee:jndi-lookup&gt;`标签从JNDI查找数据源,或者使用`&lt;bean&gt;`标签创建一个`org.apache.commons.dbcp.BasicDataSource`或`org.springframework.jdbc.datasource.DriverManagerDataSource`类型的...

    最新版本的Struts2+Spring4+Hibernate4三大框架整合(改进:增加整合Quartz和Gson)

    (1) 提供支持三种数据源方案:C3P0、DBCP、JNDI,三选一,请注释或删除其他方案 (2) 提取四种Hibernate整合方案:四选一,请注释或删除其他方案 (3) 提供两种声明式事务管理器方案:二选一,请注释或删除其他...

    Spring+SpringMVC +Hibernate 整合

    5. 数据源配置:在Spring配置文件中,配置DataSource,可以使用DBCP、C3P0等连接池,或者使用JNDI查找数据源。 6. 事务管理:Spring 提供了声明式事务管理,可以在配置文件中声明事务边界,由Spring自动管理事务的...

    简单配置hibernate

    3. `hibernate.jndi.class` 和 `hibernate.jndi.url`:在非 App Server 环境下,通过 JNDI 访问远程数据库时,需要配置这些属性来指定 JNDI 初始化上下文工厂类和 URL。 ### 连接池的选择与配置 默认的 Hibernate ...

    Hibernate3.2连接池

    本文将详细阐述如何在Hibernate 3.2中配置和使用连接池,包括C3P0、DBCP和通过JNDI从容器获取连接池。 1. **使用Hibernate自带的连接池** Hibernate 3.2虽然自带了一个连接池,但由于性能和稳定性问题,官方并不...

    Hibernate2和Hibernate3连接池配置.doc

    官方建议如果在Hibernate3中必须使用DBCP,最好通过JNDI(Java Naming and Directory Interface)方式进行配置,以避免潜在的问题。 其次,Hibernate内置的连接池虽然方便,但在性能和稳定性上并不理想,尤其是在...

    Hibernate的连接池和数据源配置

    如果你因为某种原因需要在Hibernate3中使用DBCP,建议采用JNDI方式。 二、默认情况下(即没有配置连接池的情况下),Hibernate会采用内建的连接池。但这个连接池性能不佳,且存在诸多BUG(笔者就曾在Mysql环境下被八...

    在Tomcat下配置JNDI.doc

    本篇将详细介绍如何在Tomcat下配置JNDI,以便于多个组件共享数据库连接池,例如在Hibernate框架中使用。 首先,我们需要理解Tomcat中的JNDI配置。JNDI允许我们将资源(如数据源)注册到一个全局命名空间中,这样...

    Spring整合Hibernate案例

    - **配置DataSource**:定义数据源,可以使用Spring的`DataSource`实现,如`BasicDataSource`或JNDI数据源。 - **配置SessionFactoryBean**:将DataSource与Hibernate配置文件链接起来,并设置其他属性如缓存策略...

    Hibernate使用Tomcat连接池.doc

    本文将详细介绍如何在Hibernate中使用Tomcat的内置连接池DBCP(Database Connection Pool)。 首先,Tomcat的连接池配置是在`server.xml`文件中进行的。在`&lt;Context&gt;`标签内,我们需要添加一个名为`jdbc/quickstart...

    Struts+Spring+Hibernate 整合教程

    - **3.2 配置数据源**:Spring 支持多种数据源配置方式,包括JNDI、C3P0、DBCP等。 - **步骤**: 1. 在Spring配置文件中定义数据源。 2. 配置连接池参数。 - **3.3 配置SessionFactory**:SessionFactory 是 ...

    hibernate连接池.doc

    如果由于某些原因需要使用DBCP,官方建议通过JNDI(Java Naming and Directory Interface)方式进行配置,以避免直接在Hibernate配置文件中使用。 默认情况下,Hibernate会使用一个内置的连接池。尽管简单易用,但...

    Hibernate几种连接池的比较

    4.DBCP 连接配置(JNDI方式) 由于Hibernate3不推荐使用DBCP,以下配置仅供参考。在应用服务器如Tomcat中配置JNDI数据源后,Hibernate配置如下: &lt;?xml version='1.0' encoding='UTF-8'?&gt; &lt;!DOCTYPE hibernate-...

    hibernate配置数据库连接池的三种方法

    然而,由于Hibernate 3.0之后不再直接支持DBCP,所以现在更倾向于使用其他如C3P0或HikariCP等连接池。 除了C3P0和DBCP,还有其他流行的数据库连接池实现,比如HikariCP,它以其高性能和低延迟著称,通常被认为是...

    hibernate连接池

    配置DBCP时,同样在`hibernate.cfg.xml`文件中指定相关参数,如`maxActive`、`minIdle`等。 3. **HikariCP连接池**: HikariCP是目前公认的性能最佳的连接池,它的设计目标是极低的空闲连接内存占用,极快的连接...

    Hibernate四大属性

    在企业级应用中,通常使用像Apache Commons DBCP或C3P0这样的连接池来提高性能和资源利用率。配置这个属性时,我们需要指定数据源的类名或者JNDI名称(在应用服务器中)。 2. `hibernate.hbm2ddl.auto`: 这个属性...

    hibernate连接池配置

    如果在Hibernate 3环境中必须使用DBCP,官方建议通过JNDI(Java Naming and Directory Interface)方式进行配置,以避免直接依赖特定的连接池实现。 2. **Hibernate内置连接池**: - 当未配置任何连接池时,...

    Spring整合Hibernate.jar

    3. **配置DataSource**:定义数据源Bean,这通常是连接到数据库所需的配置,如JNDI数据源或Apache DBCP数据源。 4. **配置TransactionManager**:为了实现事务管理,你需要配置HibernateTransactionManager。Spring...

Global site tag (gtag.js) - Google Analytics