더북(TheBook)

세미콜론이 없고 인터페이스에 public 접근 제어자가 없다는 점을 제외하면 그루비 버전의 ReadingListRepository는 자바 버전과 큰 차이가 없다. 이 장에서는 스프링 데이터 JPA를 다루지 않으므로 JpaRepository를 확장하지 않는다는 것이 가장 큰 차이라고 할 수 있다. 또 스프링 데이터 JPA를 사용하지 않으므로 ReadingListRepository 구현체를 직접 작성해야 한다. 코드 5-3은 JdbcReadingListRepository.groovy 구현체를 보여 준다.

 

코드 5-3 그루비로 구현한 JDBC ReadingListRepository

@Repository
class JdbcReadingListRepository implements ReadingListRepository {
 
    @Autowired
    JdbcTemplate jdbc // JdbcTemplate 주입
    List<Book> findByReader(String reader) {
        jdbc.query(
            “select id, reader, isbn, title, author, description “ +
            “from Book where reader=?”,
            { rs, row ->
                new Book(id: rs.getLong(1),
                    reader: rs.getString(2),
                    isbn: rs.getString(3),
                    title: rs.getString(4),
                    author: rs.getString(5),
                    description: rs.getString(6))
            } as RowMapper, // RowMapper 클로저
            reader)
    }
 
    void save(Book book) {
        jdbc.update(“insert into Book “ +
            “(reader, isbn, title, author, description) “ +
            “values (?, ?, ?, ?, ?)”,
            book.reader,
            book.isbn,
            book.title,
            book.author,
            book.description)
    }
 
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.