分享

Java程序中连接池、及参数绑定实现

 looline 2006-12-22


 
C3P0的具体配置方方法, 其他连接池(如DBCP等)大同小异。一下配置主要只针对连接池部分。

1.  hibernate.cfg.xml中直接配置C3P0连接池

<property name="c3p0.min_size">5</property><!--连接池的最小连接数-->

    <property name="c3p0.max_size">20</property><!--最大连接数-->

    <property name="c3p0.timeout">100</property><!--连接超时时间-->

    <!每隔100秒检测连接是否可正常使用 -->

    <property name="c3p0.idle_test_period">100</property>

    <!--当池中的连接耗尽的时候,一次性增加的连接数量,默认为3-->

<property name="hibernate.c3p0.acquire_increment">3</property>

<!--statemnets缓存大小-->

<property name="c3p0.max_statements">150</property>

2.Spring配置文件中配置C3P0连接池

<!--数据源配置 -->

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">

<!--驱动类-->

 <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>

<!--数据库属性配置 -->

<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>

<!--配置HibernateSessionFactory-->

<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.28JNDI配置(c3p0配置)

例如${tomcat_home}\webapps下有abc工程,abc工程的JNDI配置如下:

第一步在${tomcat_houme}\conf\Catalina\localhost下建立和工程名对应的abc.xml文件。

abc.xml内容如下

<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();


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多