Spring Framework(5)

으누·2024년 10월 23일

@Repository

  • DAO class 에 사용됩니다.

  • database 에 접근하는 메서드를 가지고 있는 class 에 사용됩니다.

    @Repository는 데이터베이스와의 상호작용을 담당하는 DAO 클래스임을 나타내며, 예외 처리를 단순화하고, 스프링 빈으로 자동 등록되도록 합니다.

    JDBC template API

  • 템플릿 메서드 패턴이 적용된 클래스 입니다.

    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);

DataSource 설정

  • JdbcTemplate 클래스의 JDBC API 를 이용하여 DB 연동을 처리하려면 반드시 DB 로 부터 컨넥션을 가져와야 합니다.
    DataSource 를 으로 등록하여 스프링 컨테이너가 생성하도록 합니다
    DataSource 인터페이스를 구현한 BasicDataSource 클래스를 사용합니다

DataSource 등록

   <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의 필드에 설정합니다.

profile
코딩 일기장

0개의 댓글