使用する永続化テクノロジーに関係なく、データソースを定義する必要があります。Springは、4つの異なる形式のデータソース構成方法を提供します。
Spring独自のデータソース(DriverManagerDataSource)、DBCPデータソース、C3P0データソース、JNDIデータソース。
1.Spring独自のデータソース
DriverManagerDataSource
XMLコード:
- <bean id = "dataSource"
- class = "org.springframework.jdbc.datasource.DriverManagerDataSource">
- <property name = "driverClassName" value = "oracle.jdbc.driver.OracleDriver" />
- <property name = "url" value = "jdbc:oracle:thin:@ 172.19.34.6:1521:ORCL" />
- <property name = "username" value = "orclight" />
- <property name = "password" value = "123456" />
- </ bean>
2.DBCPデータソース
DBCPの構成は、2つのjarパッケージcommons-dbcp.jarとcommons-pool.jarに依存します。
XMLコード:
- <bean id = "dataSource" class = "org.apache.commons.dbcp.BasicDataSource"
- destroy-method = "close">
- <property name = "driverClassName" value = "oracle.jdbc.driver.OracleDriver" />
- <property name = "url" value = "jdbc:oracle:thin:@ 172.19.34.6:1521:ORCL" />
- <property name = "username" value = "orclight" />
- <property name = "password" value = "123456" />
- </ bean>
上記のコードの説明:
BasicDataSourceはデータソースを閉じるためのclose()メソッドを提供するため、Springコンテナが閉じられたときにデータソースを正常に閉じることができるように、destroy-method =” close”属性を設定する必要があります。上記の必須データソース属性に加えて、一般的に使用される属性がいくつ
かあります
。defaultAutoCommit:データソースから返された接続が自動送信メカニズムを採用するかどうかを設定します。デフォルト値はtrueです。defaultReadOnly:データソースが実行のみできるかどうかを設定します。 読み取り専用操作、デフォルト値はfalse、
maxActive:データベース接続の最大数(0に設定されている場合は制限なし)、
maxIdle:待機中の接続の最大数(0に設定されている場合は制限なし)、
maxWait :待機する最大秒数(ミリ秒単位)。期限が切れるとエラーメッセージが報告されます
。validationQuery:接続が成功したかどうかを確認するために使用されるクエリSQLステートメント。SQLステートメントは少なくとも1行のデータを返す必要があります。たとえば、次のように設定できます。 "select count(*)from user";
removeAbandoned:自己中断するかどうか、デフォルトはfalse;
removeAbandonedTimeout:データ接続は数秒後に自動的に切断されます。この値を指定してくださいremoveAbandonedがtrueの場合;
logAbandoned:中断されたイベントをログに記録するかどうか。デフォルトはfalseです。
3.C3P0データソース
C3P0は、オープンソースのJDBCデータソース実装プロジェクトです。C3P0は、jarパッケージc3p0.jarに依存しています。
XMLコード:
- <bean id = "dataSource" class = "com.mchange.v2.c3p0.ComboPooledDataSource"
- destroy-method = "close">
- <property name = "driverClass" value = "oracle.jdbc.driver.OracleDriver" />
- <property name = "jdbcUrl" value = "jdbc:oracle:thin:@ 172.19.34.6:1521:ORCL" />
- <property name = "user" value = "orclight" />
- <property name = "password" value = "123456" />
- </ bean>
ComboPooledDataSourceは、BasicDataSourceと同様に、データソースを閉じるためのclose()メソッドを提供します。これにより、Springコンテナーが閉じられたときにデータソースを正常に解放できるようになります。
C3P0には、DBCPよりも豊富な構成属性があります。これらの属性を通じて、データソースに対してさまざまな効果的な制御を実行でき
ます
。acquireIncrement:接続プール内の接続が使い果たされると、C3P0は一度に新しい接続の数を作成します。acquireRetryAttempts:定義済み取得に失敗した後、データベースから新しい接続を取得するための繰り返し試行回数、デフォルトは30です
。acquireRetryDelay:2つの接続間の時間(ミリ秒単位)、デフォルトは1000です
。autoCommitOnClose:コミットされていないすべての操作はデフォルトでロールバックされます。接続が閉じられたとき。デフォルトはfalseです
。automaticTestTable:C3P0は、Testという名前の空のテーブルを作成し、テストに独自のクエリステートメントを使用します。このパラメーターが定義されている場合、属性preferredTestQueryは無視されます。このテストテーブルでは操作を実行できません。C3P0テストに使用され、デフォルトはnullです
。breakAfterAcquireFailure:接続の取得に失敗すると、接続の取得を待機しているすべてのスレッドが例外をスローします。ただし、データソースは引き続き効果的に保持され、次にgetConnection()が呼び出されたときに、接続の取得を試行し続けます。trueに設定すると、接続の取得に失敗した後、データソースは切断されたと宣言され、完全に閉じられます。デフォルトはfalseです
。checkoutTimeout:接続プールが使い果たされると、クライアントはgetConnection()を呼び出した後、新しい接続を取得するまで待機します。タイムアウト後、SQLExceptionがスローされます。0に設定されている場合は、無期限に待ちます。単位はミリ秒で、デフォルトは0です。
connectionTesterClassName:ConnectionTesterまたはQueryConnectionTesterクラスを実装して接続をテストするには、クラス名を完全修飾名に設定する必要があります。デフォルトはcom.mchange.v2.C3P0.impl.DefaultConnectionTester;
idleConnectionTestPeriod:すべての接続プールでアイドル状態の接続をチェックする秒
数。デフォルトは0はチェックなしを意味します 。initialPoolSize:初期化中に作成された接続の数。minPoolSizeとmaxPoolSizeの間の値を取ります。デフォルトは3です
。maxIdleTime:最大アイドル時間。アイドル時間を超える接続は破棄されます。0または負の場合、破棄されることはありません。デフォルトは0です
。maxPoolSize:接続プールで予約されている接続の最大数。デフォルトは15です
。maxStatements:データソースにロードされるPreparedStatementsの数を制御するために使用されるJDBC標準パラメーター。ただし、事前にキャッシュされたステートメントは、接続プール全体ではなく、単一の接続に属しているためです。したがって、このパラメーターを設定するには、多くの要因を考慮する必要があります。maxStatementsとmaxStatementsPerConnectionが両方とも0の場合、キャッシュは閉じられます。デフォルトは0です
。maxStatementsPerConnection:接続プール内の単一の接続が所有するキャッシュされたステートメントの最大数。デフォルトは0です
。numHelperThreads:C3P0は非同期操作であり、低速のJDBC操作はヘルパープロセスを介して完了します。これらの操作を拡張すると、パフォーマンスを効果的に向上させることができ、マルチスレッドを介して複数の操作を同時に実行できます。デフォルトは3です。
PreferredTestQuery:すべての接続テストに対して実行されるテストステートメントを定義します。このパラメーターは、接続テストを使用する場合のテスト速度を大幅に向上させることができます。テストテーブルは、初期データソースの時点で存在している必要があります。デフォルトはnullです
。propertyCycle:ユーザーがシステム構成パラメーターを変更するまで待機する最大秒数。デフォルトは300です
。testConnectionOnCheckout:パフォーマンスが高いため、必要な場合にのみ使用してください。trueに設定すると、送信時に各接続の有効性が検証されます。
接続テストのパフォーマンスを向上させるために、idleConnectionTestPeriodやautomaticTestTableなどのメソッドを使用することをお勧めします。デフォルトはfalseです
。testConnectionOnCheckin:trueに設定すると、接続が取得されたときに接続の有効性がチェックされます。デフォルトはfalseです。
4.JNDIデータソース
アプリケーションが高性能アプリケーションサーバー(WebLogicやWebsphere、Tomcatなど)で構成されている場合は、アプリケーションサーバー自体が提供するデータソースを使用することをお勧めします。アプリケーションサーバーのデータソースは、JNDIを使用する呼び出し元に公開されており、Springは、この目的のためにJNDIリソースを参照するJndiObjectFactoryBeanクラスを提供します。
xmlコード:
- <bean id = "dataSource" class = "org.springframework.jndi.JndiObjectFactoryBean">
- <property name = "jndiName" value = "java:comp / env / jdbc / orclight" />
- </ bean>
- <beans xmlns = http://www.springframework.org/schema/beans
- xmlns:xsi = http://www.w3.org/2001/XMLSchema-instance
- xmlns:jee = http://www.springframework.org/schema/jee
- xsi:schemaLocation = "http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://www.springframework.org/schema/jee
- http://www.springframework.org/schema/jee/spring-jee-2.0.xsd ">
- <jee:jndi-lookup id = "dataSource" jndi-name = "java:comp / env / jdbc / orclight" />
- </ Beans>
参考記事:
1. Spring構成データソースの4つの方法 http://www.2cto.com/kf/201301/184061.html
2.Springデータソースを構成し ますhttp://www.cnblogs.com/200911/archive/2012/08/10/2631760.html
3.Springの複数のデータソースの構成方法 http://blog.csdn.net/nickbest85/article/details/5510466
4.Springフレームワークで複数のデータソースの問題を解決する方法 http://www.iteye.com/topic/72486