복붙노트

[SPRING] NamedParameterJdbcTemplate 대 JdbcTemplate

SPRING

NamedParameterJdbcTemplate 대 JdbcTemplate

저는 Spring3.x의 초보자입니다. Spring DAO 지원을 배우고 있습니다. NamedParameterJdbcTemplate과 JdbcTemplate의 차이점을 알고 싶습니다. 성능면에서 어느 것이 가장 좋습니다. 그리고 언제 NamedParameterJdbcTemplate으로 가야합니까? 그리고 언제 JdbcTemplate을 갈 것인가. 귀하의 대답은 나와 같은 초보자에게 많은 도움이 될 것입니다.

해결법

  1. ==============================

    1.JdbcTemplate을 사용할 때 SQL을 제공합니까? SQL로 대체 할 각 매개 변수의 자리 표시 자. 코드에서 매개 변수를 할당하면 배열에서 인수를 전달해야하며 다음과 같이 배열에 나타나는 순서대로 사용됩니다.

    JdbcTemplate을 사용할 때 SQL을 제공합니까? SQL로 대체 할 각 매개 변수의 자리 표시 자. 코드에서 매개 변수를 할당하면 배열에서 인수를 전달해야하며 다음과 같이 배열에 나타나는 순서대로 사용됩니다.

    Object[] args = new Object[] {"x", "y"};
    String sql = "select * from foo where a = ? and b = ?";
    jdbcTemplate.query(sql, args, resultSetExtractor);
    

    따라서 실행되는 SQL은 select * from foo인데 여기서 a = 'x'와 b = 'y'입니다.

    NamedParameterJdbcTemplate을 사용하면 매개 변수 자리 표시 자에 이름을 지정하고지도를 전달하여 템플릿이지도 이름을 자리 표시 자에 일치시킬 수 있습니다. 따라서 코드는 다음과 같습니다.

    String sql = "select * from foo where a = :mya and b = :myb";
    Map<String, Object> argMap = new HashMap<String, Object>();
    argMap.put("mya", "x");
    argMap.put("myb", "y");
    namedParameterJdbcTemplate.query(sql, argMap, resultSetExtractor);
    

    첫 번째 예제와 동일한 SQL을 생성합니다 (쿼리 실행은 시간이 많이 소요되는 부분이므로 인수 삽입의 성능은 문제가되지 않습니다.).

    생각은 이름으로 인수를 일치시키는 것이 특정 순서로 인수를 지정하는 것보다 오류 발생 가능성이 적다는 것입니다. 실생활 애플리케이션에서 일반적으로 SQL은 DAO 코드와는 별도의 파일에 저장되며 실수로 잘못된 순서로 매개 변수를 가져 오는 것이 쉽습니다.

  2. ==============================

    2.측정 가능한 차이 성능은 없습니다. NamedParameterJdbcTemplate은 명명 된 매개 변수를 사용할 수있는 편리한 기능입니다. 정말로 궁금하다면 다운로드 할 수있는 소스 코드를 살펴보십시오. 소스 코드를 읽으면 포럼에 올리는 답변에 더 자신감을 가질 수 있습니다.

    측정 가능한 차이 성능은 없습니다. NamedParameterJdbcTemplate은 명명 된 매개 변수를 사용할 수있는 편리한 기능입니다. 정말로 궁금하다면 다운로드 할 수있는 소스 코드를 살펴보십시오. 소스 코드를 읽으면 포럼에 올리는 답변에 더 자신감을 가질 수 있습니다.

  3. from https://stackoverflow.com/questions/16359316/namedparameterjdbctemplate-vs-jdbctemplate by cc-by-sa and MIT license