DAO class 에 사용됩니다.
database 에 접근하는 메서드를 가지고 있는 class 에 사용됩니다.
@Repository는 데이터베이스와의 상호작용을 담당하는 DAO 클래스임을 나타내며, 예외 처리를 단순화하고, 스프링 빈으로 자동 등록되도록 합니다.
템플릿 메서드 패턴이 적용된 클래스 입니다.
JDBC 의 반복적인 코드를 제거하기 위해서 제공되는 클래스입니다.
반복되는 DB 로직은 JdbcTemplate 의 템플릿 메서드가 제공하고,
개발자는 달라지는 SQL 구문 과 설정값만 신경쓰면 됩니다
update() : INSERT, DELETE, UPDATE SQL 문을 실행하기 위해서 사용되는 메서드입니다.
* getJdbcTemplate.update("INSERT INTO USER VALUES(?, ?, ?)", new Object[]{name, age, phone});
query() : SELECT 문의 실행 결과가 여러목록으로 반환되는 경우에 사용되는 메서드입니다.
* Object[] args = { "%" + searhKeyword + "%"};
ArrayList list = getJdbcTemplate.query("SELECT * FROM USERS WHERE USER_NAME LIKE ?", args, new UsersFlowMapper();
queryForInt() : SELECT 문의 실행 결과로 반환되는 정수값을 받기 위해서 사용되는 메서드입니다.
* int count = getJdbcTemplate.queryForInt("SELECT COUNT(*) FROM USERS");
queryForObject() : SQL 문의 실행 결과를 Object 로 반환되는 경우에 사용되는 메서드입니다
* String name = getJdbcTemplate.queryForObject("SELECT NAME FROM USERS WHERE ID=?", new Object[]{"test"}. String.class);
<context:property-placeholder location="classpath:db.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
db.properties 파일에 정의된 데이터베이스 관련 속성을 읽어오는 역할을 합니다.
JdbcTemplate는 Spring Framework에서 제공하는 JDBC 작업을 간소화하기 위한 클래스로, 데이터베이스 쿼리 실행 및 결과 처리 등을 쉽게 할 수 있도록 도와줍니다
Spring JDBC 설정
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
JdbcTemplate:
JdbcTemplate은 JDBC 작업을 단순화하고, 예외 처리를 표준화하며, 쿼리 실행, 업데이트, 결과 집합 처리 등을 쉽게 할 수 있게 해줍니다.
JDBC의 복잡한 코드(예: Connection 객체 생성, Statement 객체 생성, ResultSet 처리 등)를 숨겨주어 개발자가 보다 간편하게 데이터베이스 작업을 수행할 수 있도록 합니다.
도서 등록 (Spring Framework의 JdbcTemplate을 사용하여 데이터베이스에 책 정보를 삽입하는 기능을 수행하는 insertBooks 메서드입니다)
public int insertBooks(BooksDTO dto) {
int su = jdbcTemplate.update(BOOKS_INSERT, dto.getCode(), dto.getName(), dto.getPrice(), dto.getMaker());
return su;
} // insertBooks()
도서 정보 확인
public BooksDTO getBooks(BooksDTO dto) {
try {
Object[] args = { dto.getCode() };
return jdbcTemplate.queryForObject(BOOKS_SEARCH, args , new BooksRowMapper());
} catch (Exception e) {
// TODO: handle exception
}
return dto;
jdbcTemplate.queryForObject(...): JdbcTemplate의 메서드로, SQL 쿼리를 실행하여 결과를 단일 객체로 반환합니다.
BOOKS_SEARCH: SQL SELECT 쿼리를 담고 있는 상수입니다. 예를 들어, "SELECT * FROM books WHERE code = ?"와 같은 형태일 수 있습니다.
args: SQL 쿼리에 바인딩할 파라미터 배열입니다.
new BooksRowMapper(): RowMapper 인터페이스를 구현한 객체로, 쿼리 결과를 BooksDTO 객체로 변환하는 역할을 합니다. 이 부분에서 각 열의 값을 가져와 BooksDTO의 필드에 설정합니다.