, 모두 DataSource
및 JdbcTemplates
그래서 당신은 JdbcTemplate
의 단일 인스턴스를 구성 할 수 있습니다 후 안전하게 다중의 DAO (또는 저장소)에이 공유 참조를 주입, threadsafe
있습니다. 또한 DataSource
은 연결 풀을 관리하므로 스프링 싱글 톤이어야합니다.JdbcTemplate 인스턴스가 여러 개 있는지 여부 내가 이해에서
공식 Spring Documentation JdbcTemplate best practices 수동에서 대안 (발췌 이탤릭체에 대해 설명하고 대괄호 사이에 내 노트 :
- 구성하여 Spring 설정 파일에 데이터 소스 다음 종속성 분사 데이터 소스를 공유 당신의 DAO 클래스에 빈은,. JdbcTemplate과를 [XML의 구성 및 데이터 소스 세터에
new JdbcTemplate(dataSource)
있기 때문에이 여러 JdbcTemplate을 인스턴스로 연결] 데이터 소스에 대한 세터 생성됩니다 - 사용하는 구성 요소를 스캔하고이 의존성 주입을위한 nnotation 지원. 이 경우 클래스에 @Repository (구성 요소 검색을위한 후보로 지정)로 주석을 추가하고 @Autowired로 DataSource setter 메서드에 주석을 추가합니다. [이 경우 여러 개의 JdbcTemplate 인스턴스로 연결]
- Spring의 JdbcDaoSupport 클래스를 사용하고 있고 다양한 JDBC 기반 DAO 클래스가이 클래스에서 확장되면 하위 클래스는 다음과 같이 setDataSource (..) 메소드를 상속합니다. JdbcDaoSupport 클래스. 이 클래스에서 상속할지 여부를 선택할 수 있습니다. JdbcDaoSupport 클래스는 편의상 제공됩니다. 그러나
, 나중에 메모, 낙담 [당신이 그것을 확장 각 클래스 JdbcDaoSupport의 인스턴스를했습니다 이후, JdbcTemplate을의 인스턴스 너무 파생 클래스의 각 인스턴스에 대해 (source code for JdbcDaoSupport 참조)가있다] 모든 방금 제시된 옵션 :
일단 구성되면 JdbcTemplate 인스턴스는 threadsafe입니다. 응용 프로그램이 여러 개의 데이터 소스를 필요로하는 여러 개의 데이터베이스에 액세스하는 경우 여러 개의 JdbcTemplate 인스턴스가 필요할 수 있으며 이후 여러 개의 다른 JdbcTemplates가 구성됩니다. 즉
, 단지 여러 JdbcTemplate을 인스턴스를 (하나 당 DAO)를 가진 발생합니다 제시된 모든 옵션 및 문서가 하나의 데이터베이스로 작업 할 때 그 필요하지 않습니다 말한다 직후.
내가해야 할 일은 직접적으로 JdbcTemplate
을 다양한 DAO에 주입하는 것입니다. 제 질문은 그렇게 할 수 있습니까? 또한 스프링 참조 문서가 자기 모순이라고 생각합니까? 아니면 내 오해입니까?
그냥 하나의 데이터 소스/데이터베이스 스키마 – tom
봄 문서되지에게 자기 모순 당 JdbcTemplate을을 사용하여 생각하지 않습니다. 이전 문장을 읽어야한다 - 위의 템플릿 초기화 스타일 중 어떤 것을 사용하든 (사용하지 않든) 상관없이, SQL을 실행할 때마다 JdbcTemplate 클래스의 새 인스턴스를 만드는 것은 거의 필요하지 않다. 가장 좋은 방법은 DAO 당 JdbcTemplate입니다. 복수의 데이터 소스만을 필요로하는 경우, 복수의 JdbcTemplates – hutingung