logo

Spring JdbcTemplate 튜토리얼

  1. 스프링 JDBC 템플릿
  2. Spring JDBC 템플릿의 필요성 이해
  3. Spring JDBC 템플릿의 장점
  4. JDBC 템플릿 클래스
  5. JdbcTemplate 클래스의 예

Jdbc템플릿 데이터베이스에 연결하고 SQL 쿼리를 실행하는 강력한 메커니즘입니다. 내부적으로는 JDBC API를 사용하지만 JDBC API의 문제점을 많이 해소해줍니다.

JDBC API의 문제점

JDBC API의 문제점은 다음과 같습니다.

  • 연결 생성, 명령문, 결과 집합 닫기, 연결 등 쿼리 실행 전후에 많은 코드를 작성해야 합니다.
  • 데이터베이스 로직에 대한 예외 처리 코드를 수행해야 합니다.
  • 우리는 거래를 처리해야 합니다.
  • 이러한 모든 코드를 하나의 데이터베이스 로직에서 다른 데이터베이스 로직으로 반복하는 것은 시간이 많이 걸리는 작업입니다.

Spring JdbcTemplate의 장점

Spring JdbcTemplate은 위에서 언급한 JDBC API의 모든 문제를 제거합니다. 쿼리를 직접 작성할 수 있는 방법을 제공하므로 많은 작업과 시간이 절약됩니다.


Spring Jdbc 접근 방식

Spring 프레임워크는 JDBC 데이터베이스 액세스에 대해 다음 접근 방식을 제공합니다.

  • Jdbc템플릿
  • NamedParameterJdbcTemplate
  • 단순Jdbc템플릿
  • SimpleJdbcInsert 및 SimpleJdbcCall

JdbcTemplate 클래스

이는 Spring JDBC 지원 클래스의 중심 클래스입니다. 연결 개체 생성 및 닫기 등 리소스 생성 및 해제를 담당합니다. 따라서 연결을 닫는 것을 잊어버리더라도 문제가 발생하지 않습니다.

예외를 처리하고 다음에 정의된 예외 클래스의 도움으로 유익한 예외 메시지를 제공합니다. org.springframework.dao 패키지.

JdbcTemplate 클래스의 도움으로 데이터베이스에서 데이터 삽입, 업데이트, 삭제 및 검색과 같은 모든 데이터베이스 작업을 수행할 수 있습니다.

Spring JdbcTemplate 클래스의 메소드를 살펴보자.

아니요.방법설명
1)공개 int 업데이트(문자열 쿼리)레코드를 삽입, 업데이트 및 삭제하는 데 사용됩니다.
2)공개 int 업데이트(문자열 쿼리, 개체... args)주어진 인수를 사용하여 ReadyStatement를 사용하여 레코드를 삽입, 업데이트 및 삭제하는 데 사용됩니다.
삼)공개 무효 실행(문자열 쿼리)DDL 쿼리를 실행하는 데 사용됩니다.
4)공개 T 실행(문자열 sql,PreparedStatementCallback 작업)PreparedStatement 콜백을 사용하여 쿼리를 실행합니다.
5)공개 T 쿼리(문자열 sql, ResultSetExtractor rse)ResultSetExtractor를 사용하여 레코드를 가져오는 데 사용됩니다.
6)공개 목록 쿼리(String sql, RowMapper rse)RowMapper를 사용하여 레코드를 가져오는 데 사용됩니다.

Spring JdbcTemplate의 예

Oracle10g 데이터베이스 내에 다음 테이블을 생성했다고 가정합니다.

 create table employee( id number(10), name varchar2(100), salary number(10) ); 
Employee.java

이 클래스에는 생성자와 setter 및 getter가 포함된 3개의 속성이 포함되어 있습니다.

 package com.javatpoint; public class Employee { private int id; private String name; private float salary; //no-arg and parameterized constructors //getters and setters } 
직원Dao.java

여기에는 하나의 속성 jdbcTemplate과 세 가지 메서드 saveEmployee(), updateEmployee 및 deleteEmployee()가 포함되어 있습니다.

 package com.javatpoint; import org.springframework.jdbc.core.JdbcTemplate; public class EmployeeDao { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public int saveEmployee(Employee e){ String query='insert into employee values( ''+e.getId()+'',''+e.getName()+'',''+e.getSalary()+'')'; return jdbcTemplate.update(query); } public int updateEmployee(Employee e){ String query='update employee set name=''+e.getName()+'',salary=''+e.getSalary()+'' where id=''+e.getId()+'' '; return jdbcTemplate.update(query); } public int deleteEmployee(Employee e){ String query='delete from employee where id=''+e.getId()+'' '; return jdbcTemplate.update(query); } } 
applicationContext.xml

그만큼 DriverManagerDataSource 드라이버 클래스 이름, 연결 URL, 사용자 이름 및 비밀번호와 같은 데이터베이스에 대한 정보를 포함하는 데 사용됩니다.

라는 속성이 있습니다. 데이터 소스 DriverManagerDataSource 유형의 JdbcTemplate 클래스에 있습니다. 따라서 datasource 속성에 대한 JdbcTemplate 클래스의 DriverManagerDataSource 개체에 대한 참조를 제공해야 합니다.

여기서는 EmployeeDao 클래스의 JdbcTemplate 객체를 사용하고 있으므로 setter 메소드를 통해 전달하지만 생성자를 사용할 수도 있습니다.

 
Test.java

이 클래스는 applicationContext.xml 파일에서 Bean을 가져오고 saveEmployee() 메소드를 호출합니다. 코드 주석 처리를 제거하여 updateEmployee() 및 deleteEmployee() 메서드를 호출할 수도 있습니다.

 package com.javatpoint; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext ctx=new ClassPathXmlApplicationContext('applicationContext.xml'); EmployeeDao dao=(EmployeeDao)ctx.getBean('edao'); int status=dao.saveEmployee(new Employee(102,'Amit',35000)); System.out.println(status); /*int status=dao.updateEmployee(new Employee(102,'Sonoo',15000)); System.out.println(status); */ /*Employee e=new Employee(); e.setId(102); int status=dao.deleteEmployee(e); System.out.println(status);*/ } } 
이 예제를 다운로드하세요(MyEclipse IDE를 사용하여 개발됨)
이 예제를 다운로드하세요(Eclipse IDE를 사용하여 개발됨)