2015-01-15 5 views
3

잠시 동안 Java EE에서 다소 떨어져 있었지만이 모든 것들에 대한 기본 아이디어가 있습니다.JTDS 드라이버 - 연결 풀링과 연결 풀

내가 여기 JTDS의 문서를 읽고있다 :

http://jtds.sourceforge.net/features.html

그것은 문 풀링 및 연결 풀링을 제공 말한다하지만, 연결 풀 구현을 제공하지 않습니다. 내가 위에 그것을 (DBCP와 같은) 연결 풀을 필요 왜

  1. 는 JTDS 드라이버 자체가 다음 연결 풀링, 를 제공하는 제공?
  2. 다른 말로하면, 해당 연결 풀링과 JTDS에서 제공 한 풀의 차이점은 무엇입니까? 위에 풀 연결 풀 구현 (이 JTDS 설명서 페이지의 의미에서) 구현이 무엇입니까?
  3. 문과 연결 풀링의 차이점은 무엇입니까? (이 JTDS 문서 페이지에 언급 된대로) ? 나는이 꽤 혼란 스러워요로 (I 명시 적으로에 대한 요청하지 않은 일이 중요하다고 무엇이든)

당신의 대답에
더 많은 세부 정보를 추가하시기 바랍니다.

+1

"Statement Pooling"은 오타가있어 매우 필요한 기능 중 하나 인 "Statement cache"여야합니다 : 응용 프로그램이 동일한 쿼리를 실행할 때 드라이버가 준비된 명령문을 다시 사용합니다 (예 : "select * from users where userid =?"). 그것은 (IO/네트워크) 시간을 많이 절약 할 수 있으며 [HikariCP] (https://github.com/brettwooldridge/HikariCP)와 같은 연결 풀 구현은 JDBC 드라이버가이 기능을 가지고 있다고 가정합니다 (HikariCP가 성명서를 구현하지 않도록 선택했습니다. 캐시 기능). – vanOekel

답변

5

API 문서에서 알 수있는 한 jTDS는 javax.sql.PooledConnectionjavax.sql.ConnectionPoolDataSource 구현을 제공합니다. 이러한 클래스는 Java EE 응용 프로그램 서버와 같은 연결 풀에서 사용되며 연결 풀 자체는 아닙니다.

ConnectionPoolDataSourcePooledConnection 개체를 생성합니다. 즉, 연결 풀의 데이터 소스는 입니다. PooledConnection은 물리적 연결의 핸들이며 연결 풀 내에 보관됩니다. 사용자가 풀에서 연결을 요청하면 연결 풀은 PooledConnection을 '사용 가능'목록에서 '사용중인'목록으로 이동하고 PooledConnection에서 논리적 인 java.sql.Connection을 얻습니다. 이 논리적 연결이 사용자에게 전달됩니다.

PooledConnection은 연결 풀에서 논리적 연결을 모니터링하는 데 사용할 수 있습니다. 예를 들어, close()이 호출 될 때 PooledConnection을 'available'로 되 돌리거나 논리적 연결을 강제로 취소하고 무효화합니다 (예 : 너무 오래 사용중인 경우).

그래서 jTDS에는 연결 풀 구현 자체가 없지만 연결 풀을 지원합니다. JDBC 사양의 문구가 너무 혼란 스럽다는 것은 불행한 일입니다.

나는이 주제에 관해 더 자세한 대답을 a similar question에있다.