2017-11-24 13 views
2

私はSparkを使用して残りのAPIを作成しています。いつデータベース接続を終了する必要があります

また、私はまたはmLite + mysqlデータベースを永続データベース用に使用しています。

今質問はいつデータベースとの接続を閉じる必要がありますか?

各リクエストの後に接続を閉じる必要がありますか?

これは、私は、データベースに接続してる方法です:

JdbcConnectionSource connectionSource = JdbcConnectionSource(databaseUrl); 

connectionSource.setUsername("myUsername"); 
connectionSource.setPassword("myPassword"); 
+0

各要求を罰するされた後。あなたが*終わったら*は良い計画です。 – tadman

+0

重複した質問だと思います。回答を見つけるにはhttps://stackoverflow.com/questions/11356937/good-practice-to-open-close-connections-in-an-asp-net-application、https://stackoverflow.com/questions/4439409を参照してください。/open-close-sqlconnection-or-keep-open、https://stackoverflow.com/questions/4111594/why-always-close-database-connection –

+0

これはasp.netアプリケーション@ImranAliKhanではありません。 – Gray

答えて

0

ので、実際には、これはあなたがスパークでそれを行う方法ですGray'sコメントに基づいてOK:

JdbcPooledConnectionSource connectionSource = JdbcPooledConnectionSource(databasePath, username, password); 

ので、我々は新しいを作成する必要はありません。私が代わりにJdbcConnectionSourceJdbcPooledConnectionSourceを使用してやっていますすべてのreqeustに対する接続またはすべてのreqeustに対する単一接続。

しかし、これは、それがすべてではない、私たちはより良いパフォーマンスを得るためにいくつかの追加のものが必要:

connectionSource.setMaxConnectionsFree(10) 
connectionSource.setMaxConnectionAgeMillis(20000) 
connectionSource.setCheckConnectionsEveryMillis(5000) 

これを行うことにより、あなた自身で接続をクローズする必要はありません。あなたは、このパラメータを変更する必要があると思われる場合

ところで、私に知らせてください;)

4

データベース接続を開くために高価なので、価値があります。

バックグラウンドで接続の開閉を管理する接続プールを使用できるかどうかを調べることをお勧めします。

私はconnection pool developed for Tomcatを成功させました。それをスタンドアロンで使用することは可能であり、私はSparkjavaの2つのアプリケーションで何をしているのでしょうか。

close()を呼び出すと、接続がプールに返されます。これは、各呼び出しの後に接続を閉じることを意味します。プールに接続を要求するときに、接続を再利用することができます。プールが殺す古い接続でない限り。これらは、アプリケーション開発者として気にする必要のない詳細です。あなたの視点から、必要な時に接続が得られます。

+1

+1。 ORMLiteをプールされた接続ソースで使用する方法に関するドキュメントは次のとおりです。http://ormlite.com/docs/pooled-cs – Gray

関連する問題