2017-11-24 16 views
2

나는 나머지 API를 만들기 위해 Spark을 사용하고 있습니다.언제 데이터베이스 연결을 닫아야합니까?

나는 또한 ormLite + 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 의견에 따라 확인 :

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

그래서 우리는 새를 만들 필요가 없습니다 내가 대신 JdbcConnectionSourceJdbcPooledConnectionSource을 사용하고 있어요 모든 reqeust에 대한 연결 또는 모든 reqeust에 대한 단일 연결.

그러나이 모두가 아니다, 우리는 더 나은 성능을 위해 몇 가지 추가가 필요합니다

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

이렇게 당신이 당신 자신에 의해 연결을 종료 할 필요가 없습니다.

이 매개 변수를 변경해야한다고 생각하면 BTW에서 알려주세요.

4

데이터베이스 연결을 열 수 비용 때문에 가치가있다.

백그라운드에서 열기 및 닫기 연결을 관리하는 연결 풀을 사용할 수 있는지 조사해 보는 것이 좋습니다.

나는 성공적으로 connection pool developed for Tomcat을 사용했습니다. 그것을 독립 실행 형으로 사용하는 것이 가능하며 Sparkjava 두 가지 응용 프로그램에서 내가하는 일이 있습니다.

close()를 호출하면 연결이 풀로 반환됩니다. 이것은 각 호출 후에 연결을 닫음을 의미합니다. 풀에 연결을 요청할 때 연결을 다시 사용할 수 있습니다. 수영장이 죽이는 오래된 연결이 아니라면. 이것들은 응용 프로그램 개발자로서 신경 쓸 필요가없는 세부 사항입니다. 당신의 관점에서 당신이 필요할 때 당신은 연결을 얻습니다.

+1

+1. ORMite를 풀링 된 연결 소스와 함께 사용하는 방법에 대한 문서는 다음과 같습니다. http://ormlite.com/docs/pooled-cs – Gray