Customization (Block Comments)
Overview
Repository 등 생성된 코드에 커스텀 메서드를 추가할 때는 블록 코멘트 방식을 사용합니다. 이 방식을 사용하면 ElastiCORE가 코드를 재생성할 때에도 커스텀 코드가 보존됩니다.
Block Comment Syntax
커스텀 코드는 반드시 // !---- 와 // ----! 블록 내에 작성해야 합니다:
// !-----------------------------------------------------------
@Query("SELECT e FROM Entity e WHERE e.name = :name")
List<Entity> findByName(@Param("name") String name);
// ------------------------------------------------------------!
Rules
중요
- 반드시
// !----로 시작하고// ----!로 끝내야 합니다 - 해당 블록은 소스 내에서 한 번만 사용할 수 있습니다
- 한 영역 정의 후 여러 개발자가 코딩 가능합니다
- 블록 외부에 작성된 커스텀 코드는 재생성 시 유실될 수 있습니다
예시
Repository에 커스텀 쿼리 추가
@Repository
public interface ArticleRepository extends JpaRepository<Article, String> {
// ElastiCORE가 자동 생성한 메서드들
// ...
// !-----------------------------------------------------------
@Query("SELECT a FROM Article a WHERE a.board.bid = :boardId ORDER BY a.createDate DESC")
List<Article> findRecentByBoard(@Param("boardId") Long boardId);
@Query("SELECT COUNT(a) FROM Article a WHERE a.board.bid = :boardId")
long countByBoard(@Param("boardId") Long boardId);
// ------------------------------------------------------------!
}
Service에 비즈니스 로직 추가
@Service
public class ArticleService {
// ElastiCORE가 자동 생성한 메서드들
// ...
// !-----------------------------------------------------------
public List<ArticleDTO> getRecentArticles(Long boardId, int limit) {
// 커스텀 비즈니스 로직
return articleRepository.findRecentByBoard(boardId)
.stream()
.limit(limit)
.map(this::toDTO)
.collect(Collectors.toList());
}
// ------------------------------------------------------------!
}