2012-07-18 4 views
0

그래서 JDBC보다 데이터베이스 풀링에 더 좋은 옵션이 있다는 것을 알았지 만 여전히 뭔가가 나를 미치게합니다. 모든 예제 코드에서 이와 같은 풀링을 제안합니다.우리가 PoolableConnectionFactoryObject를 만드는 이유

GenericObjectPool connectionPool = new GenericObjectPool(null); 

ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(url, un, pw); 

PoolableConnectionFactory poolableConnectionFactory = 
      new PoolableConnectionFactory(connectionFactory, connectionPool, null, "SELECT 1", false, true); 
PoolingDataSource dataSource = new PoolingDataSource(connectionPool); 

return dataSource; 

왜 PoolableConnectionFactory가 만들어 졌습니까? 그것은 결코 사용되지 않으며, 소스를 보면서, 실제로 생성자에서 어떤 것도 함께 묶어 버리는 것을 볼 수 없으며, 자신의 private 변수를 설정하는 것 이외에는 어떤 것도하지 않습니다. JDBC 사이트는 정보에 대해 다소 암묵적이며 소스 코드를 통한 모든 파기는 나를 혼란스럽게 만들었습니다. 이것을 할 이유가 있습니까? 외관상으로는 실제로 변수를 변수에 할당하지 않고 새로운 객체로 인스턴스화 할 수 있습니다. 그러면 충분할 것입니다 ... 더 혼란스럽게합니다. 팩토리를 생성 생성, 그래서

_pool = pool; 
_pool.setFactory(this); 

하고 만드는 :

답변

1

가정이 클래스는 평민 - DBCP 클래스입니다, PoolableConnectionFactory의 생성자는 인수로 pased 풀의 공장으로 작성되는 인스턴스를 등록 풀을 사용하면 필요할 때 새로운 연결을 만들 수 있습니다.

+0

감사합니다. 이 메소드가 간과 되었기 때문에 간과 한 것 같아요. 오브젝트를 함께 연결하는 방법을 알 수 없었습니다. –