C3P0的具體配置方方法, 其他連接池(如DBCP等)大同小異。一下配置主要只針對連接池部分。
1. 在hibernate.cfg.xml中直接配置C3P0連接池
<property name="c3p0.min_size">5</property><!--連接池的最小連接數(shù)-->
<property name="c3p0.max_size">20</property><!--最大連接數(shù)-->
<property name="c3p0.timeout">100</property><!--連接超時時間-->
<!每隔100秒檢測連接是否可正常使用 -->
<property name="c3p0.idle_test_period">100</property>
<!--當(dāng)池中的連接耗盡的時候,一次性增加的連接數(shù)量,默認為3-->
<property name="hibernate.c3p0.acquire_increment">3</property>
<!--statemnets緩存大小-->
<property name="c3p0.max_statements">150</property>
2.在Spring配置文件中配置C3P0連接池
<!--數(shù)據(jù)源配置 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<!--驅(qū)動類-->
<property name="driverClassName">
<value> oracle.jdbc.driver.OracleDriver</value>
</property>
<!--連接字符串-->
<property name="url">
<value> jdbc:oracle:thin:@210.51.173.22:1521:orcl</value>
</property>
</bean>
<!--數(shù)據(jù)庫屬性配置 -->
<bean
id="hibernateProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties">
<props>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop
key="hibernate.dialect"> org.hibernate.dialect.Oracle9Dialect
</prop>
<prop
key="hibernate.query.substitutions">true ‘T‘, false ‘F‘</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.c3p0.minPoolSize">5</prop>
<prop key="hibernate.c3p0.maxPoolSize">20</prop>
<prop key="hibernate.c3p0.timeout">600</prop>
<prop key="hibernate.c3p0.max_statement">50</prop>
</property>
</bean>
<!--配置Hibernate的SessionFactory-->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource"/>
</property>
<property name="hibernateProperties">
<ref bean="hibernateProperties" />
</property>
<!-- 添加po映射文件 -->
<property name="mappingResources">
<list>
<value>Customer.hbm.xml</value>
<value>Account.hbm.xml</value>
</list>
</property>
</bean>
2. Tomcat 5.0.28中JNDI配置(c3p0配置)
例如${tomcat_home}\webapps下有abc工程,對abc工程的JNDI配置如下:
第一步在${tomcat_houme}\conf\Catalina\localhost下建立和工程名對應(yīng)的abc.xml文件。
abc.xml內(nèi)容如下
<Context displayName="Tomcat Administration Application" docBase="${tomcat_home} /server/webapps/abc" path="/abc" privileged="true" workDir="work\Catalina\localhost\abc">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_admin_log." suffix=".txt" timestamp="true"/>
<Resource name="jdbc/mysql" auth="Container" type="com.mchange.v2.c3p0.ComboPooledDataSource" />
<ResourceParams name="jdbc/mysql"> <!--JNDI名字-->
<parameter>
<name>factory</name>
<value>org.apache.naming.factory.BeanFactory</value>
</parameter>
<parameter>
<name>driverClass</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>jdbcUrl</name>
<value>jdbc:mysql://localhost/weblogin</value>
</parameter> <parameter>
<name>user</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>123</value>
</parameter>
<parameter>
<name>minPoolSize</name>
<value>5</value>
</parameter>
<parameter>
<name>maxPoolSize</name>
<value>15</value>
</parameter>
<parameter>
<name>acquireIncrement</name>
<value>5</value>
</parameter>
</ResourceParams>
</Context>
第二步,修改abc/WEB-INF/web.xml文件,添加JNDI引用
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
重啟tomcat,完成。
Java中使用綁定變量的sql語句
1. JDBC形式:
Connection conn=ConnectionManaget.getConnection();
String sql="select username,password from userinfo where id=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, "123ei2xk224cj2tr78tp");
ResultSet rs=ps.executeQuery();
while(rs.next())
{
System.out.println("用戶名:"+rs.getString("username"));
System.out.println("密碼:"+rs.getString("password"));
}
if(rs!=null)
{
rs.close();
rs=null;
}
if(ps!=null)
{
ps.close();
ps=null;
}
if(conn!=null)
{
conn.close();
conn=null;
}
2.hibernate形式
Session session=HibernateSessionFactory.getSession();
Query query=session.createQuery("from FsmBlogAdmin where username=?");
query.setString(0, name);
Iterator it=query.list().iterator();
HibernateSessionFactory.closeSession();
|