データベース接続データは JNDI データ ソースにある必要があり、接続プールを使用するが、クラスでは使用しない方がよいでしょう。これは Web アプリケーションであるため、接続プールの構成は Web アプリケーション サーバーに大きく依存することに注意してください。
例として、これはTomcat 7 データベース接続プールの構成およびJBoss 7 データベース接続プールの構成で非常によく説明されています(GlassFish およびその他の Web アプリケーション サーバーでデータベース接続プールを構成する手順は他にもあります。これはサーバーごとに異なることに注意してください)。 .
両方の例から、接続属性を配置する XML ファイルがあることがわかります: データベース URL、ユーザー、パスワード、最小および最大プール接続サイズ (データベースへの接続を開く数)
Tomcat の方法:
<Resource name="jdbc/ProjectX" auth="Container"
type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/projectx"
username="user" password="password" maxActive="20" maxIdle="10" maxWait="-1"/>
JBoss の方法:
<datasource jndi-name="jdbc/ProjectX" pool-name="MySqlDS">
<connection-url>jdbc:mysql://localhost:3306/projectx</connection-url>
<driver>com.mysql</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<pool>
<min-pool-size>10</min-pool-size>
<max-pool-size>100</max-pool-size>
<prefill>true</prefill>
</pool>
<security>
<user-name>user</user-name>
<password>password</password>
</security>
<statement>
<prepared-statement-cache-size>32</prepared-statement-cache-size>
<share-prepared-statements/>
</statement>
</datasource>
<drivers>
<driver name="com.mysql" module="com.mysql">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
</drivers>
最後に、データベース接続プールを構成して機能する場合、接続を回復するためにコードで行う必要があるのはInitialContext#lookup
、JNDI リソース名を使用してリソースを回復するための呼び出しです。
これを知っていれば、"jdbc/ProjectX" という名前の MySQL データベースに接続するように JNDI リソースを構成した後、次のConnection
ように回復するクラスを持つことができます。
public class DatabaseConnectivity {
public static Connection getConnection() throws NamingException, SQLException {
InitialContext cxt = new InitialContext();
DataSource ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/ProjectX" );
return ds.getConnection();
}
}
ちなみに、クラスの機能のグループを知るために、パッケージにはさまざまな名前を使用します。例えば:
src
- edu.home.controller.servlet
+ CoreServlet.java
- edu.home.controller.filter
+ SessionFilter.java
- edu.home.model.entity
+ AnEntity.java
+ AnotherEntity.java
- edu.home.model.database
+ DatabaseConnectivity.java
- edu.home.model.service
+ AnEntityService.java
+ AnotherEntityService.java
(and on and on...)