日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate ORM框架——连接池相关

發布時間:2024/4/13 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate ORM框架——连接池相关 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

課堂筆記

**********c3p0與hibernate的整合使用********* 1.把hibernate下載包里面的optional文件夾下的3個jar包添加到項目a)c3p0 jar文件是c3p0連接池的核心實現b) mchange-commons-java是c3p0依賴包c)hibernate-c3p0是hibernate整合c3p0使用的一個jar包連接池是可以脫離hibernate單獨使用的。其它不用hibernate框架的項目要使用c3p0連接池,只需要c3p0與mchange-commons兩個jar包即可單獨使用c3p0的時候,一般把相關的配置放置在c3p0.properties文件中或其它名字的配置文件中,配置文件中,一般會有2個層面的配置一個層面是jdbc 鏈接相關的配置,比如驅動,url,用戶名,密碼等另一個層面的配置就是連接池的相關配置,比如minPoolsize,maxpoolsize等hibernate整合c3p0使用時,只需要在hibernate.cfg.xml配置文件配置c3p0開頭的一些連接池設置就可以了,hibernate使用c3p0的邏輯是a)看到hibernate.cfg.xml文件中有c3p0的相關配置,hibernate知道需要使用c3p0連接池了b)在classpath下查看是否有c3p0相關的jar包c)找到后,加載相關類,得到相關的ConnectionProviderd) 依據ConnectionProvider就可以得到相關的池化了的Jdbc Connection對象在hibernate整合c3p0使用時,只需要配置即可,平時的操作與沒有使用c3p0的用法是一樣的hibernate的session對象會自動關聯c3p0提供的已經池化的Connection對象

?

?

?

連接池(HibernateStudy_connectionpool項目):

一、需要在lib文件夾里,再導入c3p0-0.9.5.2.jar、hibernate-c3p0-5.2.10.Final.jar、mchange-commons-java-0.2.11.jar,以及MySql的驅動sqljdbc42.jar

二、連接池代碼

(1)配置文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration><session-factory><!-- MySQL數據庫連接配置 --><property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property><property name="connection.url">jdbc:sqlserver://localhost:1433;databaseName=demo</property><property name="connection.username">sa</property><property name="connection.password"></property><property name="dialect">org.hibernate.dialect.SQLServer2008Dialect</property><!-- 配相關的c3p0的關鍵詞 --><property name="c3p0.minPoolSize">4</property><!-- 設定讓hibernate幫我們自動創建表,不設定可以嗎? --> <!-- <property name="hbm2ddl.auto">create</property> --><property name="show_sql">true</property><property name="format_sql">true</property><mapping resource="shuang/m2m/ClassInfo_m2m.xml"/></session-factory></hibernate-configuration>

(2)

實體類

public class ClassInfo {private String cid ;private String name; }

實體映射文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="shuang.m2m"><class name="ClassInfo" table="CLASSINFO"><id name="cid" column="cid"><generator class="assigned"></generator></id><property name="name" ></property></class> </hibernate-mapping>

(3)Main測試方法

package com.nf;import java.sql.Connection; import java.sql.SQLException; import java.util.HashSet; import java.util.List; import java.util.Set;import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.boot.MetadataSources; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.jdbc.Work;import util.HibernateUtil;public class Main {public static void main(String[] args) {SessionFactory sf = HibernateUtil.getSessionFactory();Session s = sf.openSession();s.doWork(new Work(){//接口 @Overridepublic void execute(Connection connection) throws SQLException {System.out.println(connection.getClass().getName());//測試是否連接c3p0池,成功//成功,則顯示com.mchange.v2.c3p0.impl.NewProxyConnection }});s.close();sf.close();} }

?

優化以上代碼:

在導入相應的jar包后,刪掉配置文件,改成c3p0.properties文件:

(1)c3p0.properties文件

c3p0.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver c3p0.jdbcUrl=jdbc:sqlserver://localhost:1433;databaseName=demo c3p0.user=sa c3p0.password=

(2)Main測試

package c3p0pool;import java.beans.PropertyVetoException; import java.sql.Connection;import com.mchange.v2.c3p0.ComboPooledDataSource;public class Main {public static void main(String[] args) throws Exception { /* ComboPooledDataSource cpds = new ComboPooledDataSource();cpds.setDriverClass( "com.microsoft.sqlserver.jdbc.SQLServerDriver" ); //loads the jdbc driver cpds.setJdbcUrl( "jdbc:sqlserver://localhost:1433;databaseName=demo" );cpds.setUser("sa"); cpds.setPassword(""); */ ComboPooledDataSource cpds = new ComboPooledDataSource();Connection conn = cpds.getConnection();System.out.println(conn.getClass().getName());conn.close();}}

?

?

?

關于連接池的案例說明

(1)水池

package pooldemo;import java.util.ArrayList; import java.util.List;public class WaterPool {private List<Water> allWaters;public WaterPool(){allWaters = new ArrayList<Water>();allWaters.add(new Water());allWaters.add(new Water());allWaters.add(new Water());}public Water getWater(){Water w = null;if(allWaters.size() >0 ){w= allWaters.remove(0);w.setPool(this);}return w;}public void returnWater(Water w){allWaters.add(w);}public int haiShengXiaDe(){return allWaters.size();} }

?

(2)水

package pooldemo;public class Water {private WaterPool pool;//多對一public void setPool(WaterPool pool) {this.pool = pool;}public void close() {//放回水池里pool.returnWater(this);} }

?

(3)Main測試

package pooldemo;public class PoolTest {public static void main(String[] args) {WaterPool pool = new WaterPool();System.out.println("最開始--" + pool.haiShengXiaDe());Water w = pool.getWater();System.out.println("拿走一個之后--"+ pool.haiShengXiaDe());pool.returnWater(w);// w.close();System.out.println("調用w的close之后"+pool.haiShengXiaDe());}}

?

?

?

/*以上個人整理筆記,如果有誤或者有不懂的地方,歡迎評論與指出*/

轉載于:https://www.cnblogs.com/Sunny-lby/p/7396550.html

總結

以上是生活随笔為你收集整理的Hibernate ORM框架——连接池相关的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。