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> <!--當池中的連接耗盡的時候,一次性增加的連接數(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 例如${tomcat_home}\webapps下有abc工程,對abc工程的JNDI配置如下: 第一步在${tomcat_houme}\conf\Catalina\localhost下建立和工程名對應的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(); |