2011-09-30 3 views
1

저는 스프링 프레임 워크부터 시작했습니다. 또한 DBCP 풀링을 사용하고 있는데 jdbcTemplate을 사용하여 올바르게 작동하는 방법을 아직 알지 못합니다.Spring - jdbcTemplate

작성된/삽입 된 jdbcTemplate 인스턴스를 여러 DAO간에 재사용하는 것이 가장 좋으며, 각 DAO에 대해 jdbcTemplate을 작성하는 것이 맞습니까?

나는 현재 주석 접근 방식을 사용하고 있습니다 :

public class FooDAO { 

    private JdbcTemplate jdbcTemplate; 

    @Autowired 
    public void setDatasource(DataSource dataSource) { 
    this.jdbcTemplate = new JdbcTemplate(dataSource); 
    } 
} 

내가 JdbcDaoSupport에 대해 알고 있어요,하지만 난 방법 setDatasource가 마지막으로 표시되어 있으므로, 데이터 소스를 주입하는 방법을 모르겠어요.

그러나 jdbcTemplate을 재사용하는 것이 가장 좋은 방법인지는 확실하지 않습니다.

답변

4

주사하여 공유하십시오. "새로운"전화하지 마십시오; Spring bean factory의 통제를 벗어난다.

+0

맨 먼저 답장을 보내 주셔서 감사합니다.하지만 조언을 잘 이해하고 있는지 잘 모르겠습니다. 내 DAO는 @Service로 표시되므로 스프링으로 관리됩니다. 내 DAO는 서비스에 주입됩니다. jdbcTemplate을 재사용하는 것은 좋은 접근법입니다. 그러나 나는 그것을 할 수있는 우아한 방법이 있는지 잘 모르겠다. 아마 JdbcDaoSupport 클래스가 그 해결책이어야합니다. – Peter

+0

물론입니다. 요점은 Spring에서 데이터 소스를 제공해야한다는 것입니다. "new"를 호출하지 말고 직접 작성하십시오. – duffymo

+0

감사합니다.하지만이 사이트에서는 투표를 변경하고 도움이되는 답변을 수락합니다. 이 방법으로 문제가 해결된다면 투표하고 수락하면됩니다. – duffymo

0

JdbcDaoSupport에 대해 알고 있지만 데이터 소스 삽입 방법을 모르겠다. setDatasource 메서드가 final로 표시되어 있기 때문이다.

public class JdbcDaoSupportTest extends JdbcDaoSupport { 

    public void insert() { 
     this.getJdbcTemplate().execute("insert into tb_test1 values(1,'ycl','123')"); 
     System.out.println("complete..."); 
    } 
} 

스프링 콜 세트 메소드는 메소드가 최종 메소드인지 아닌지 상관 없습니다.

당신의 JdbcDaoSupportTest에서 다음
<bean id="jdbcDaoSupportTest" class="com.xxxxx.JdbcDaoSupportTest"> 
     <property name="dataSource" ref="dataSource" /> 
</bean> 

, 당신은 this.getJdbcTemplate()를 호출 JdbcTemplate을가 어떤 조작을 얻을 수 있습니다.

관련 문제