2012-02-11 6 views
1

私はTomcatとmySQLをリソース共有方法で把握しています。そのすべて正常に動作しますが、私は接続権を処理しているとは思わない。私はTomcatではなくMySQLに直接JDBCを使用することに慣れています。Tomcatデータベース接続、私はこれを正しくやっていますか?

サーブレットが最初に実行されたときに、サーブレットがintializeConnection()を呼び出し、再度実行しません。しかし、私は実際に各明細書の接続を開いて閉じるべきだと思いますか?誰かが接続を処理する正しい方法を示すために、以下のコードを調整することができますか?少し混乱します。

public Connection con; 

    public void intializeConnection() throws SQLException, NamingException{ 
     connect(); 
    } 

    public void connect() throws SQLException, NamingException{ 

     Context initCtx = new InitialContext(); 
     Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
     DataSource ds = (DataSource) envCtx.lookup("jdbc/TestDB"); 
     con = ds.getConnection();    

    } 

    public void excuteStatement(String query) throws SQLException{ 
     con.createStatement().executeUpdate(query); 
    } 

    public ResultSet getResultSet(String query) throws SQLException{ 
     //not yet implemented 

    } 

私の2番目の質問は、結果セットをこのように戻す方法がわかりません。

TIA

答えて

3

私はより良い設計が要求ごとに接続を使用し、完了したら、それを閉じることだと思います。それは私の意見では、より良いスケールになります。

JDBCチュートリアルをご覧ください。それは、ResultSetおよび大いに多くを取得する方法を紹介します:

http://docs.oracle.com/javase/tutorial/jdbc/basics/

+0

おかげでダフィーは、私が思ったこと、それぞれの要求に応じて開閉します。 –

3

あなたにTomcatの一部である接続プーリングを使用する場合、あなたがしなければならないが、中に接続プールを定義している方が良いですあなたが使用しているeclipse(warファイルのルートのMETA-INFというフォルダにあります)を使用している場合は、context.xmlというファイルをWebContent \ META-INFフォルダに置きます。

<?xml version="1.0" encoding="UTF-8"?> 
<Context> 
    <Resource name="jdbc/theDB" 
     auth="Container" 
     type="javax.sql.DataSource" 
     driverClassName="org.postgresql.Driver" 
     url="jdbc:postgresql://127.0.0.1:5432/theDB" 
     username="theusername" 
     password="thepassword" 
     maxActive="20" maxIdle="10" 
     maxWait="-1" 
    /> 
</Context> 

次に、各リクエスト方法で接続を開いたり閉じたりすることができます。また、上記の検索用のコードでは、jndiを2回呼び出す必要はありません。java:comp/env/jdbc/TestDB

また、ResultSetを返すことは望ましくありません。代わりに結果セット内のデータを表すオブジェクトを返す必要があります。したがって、クエリがCustomerオブジェクトを返す場合、getResultSetのメソッドはgetCustomersを呼び出す必要があります。リスト >

JDBCは扱いにくい特に例外処理や文、コネクション、結果セットなどを正しく処理するためには、私は非常にあなたのコードを簡単にするためにSpringJDBCテンプレートのようなものを使用することをお勧めします。

関連する問題