Closed leo0842 closed 1 year ago
JdbcTemplate
@Repository public class RoleEntityRepositoryImpl implements RoleEntityRepository { private List<RoleHistory> queryRoleHistories(Long roleId) { return jdbcTemplate.query( "SELECT MAX(ID) id, MAX(rh.date_time) date_time " + "FROM role_history rh " + "WHERE rh.role_id = :roleId " + "GROUP BY cast(rh.date_time as DATE) " + "ORDER BY date_time desc", new MapSqlParameterSource("roleId", roleId), (rs, rowNum) -> new RoleHistory( rs.getLong("id"), rs.getTimestamp("date_time").toLocalDateTime(), new ArrayList<>() ) ); } private void addMatchResults(Map<Long, RoleHistory> idsByHistory) { jdbcTemplate.query( "SELECT * FROM role_match_result rms WHERE rms.role_history_id in (:ids)", new MapSqlParameterSource("ids", idsByHistory.keySet()), (rs, rowNum) -> { RoleMatchResult matchResult = new RoleMatchResult( new RoleName(rs.getString("role_name")), rs.getLong("member_id") ); RoleHistory history = idsByHistory.get(rs.getLong("role_history_id")); history.getMatchResults().add(matchResult); return null; }); } }
(필수) 구현한 기능의 commit id 혹은 issue 번호를 명시한다.
458
(필수) 리팩토링할 대상 혹은 작업 내용을 명시한다.
JdbcTemplate
으로 기록을 조회하고 있어서 가독성이 좋지 않고 영속성을 이용할 수 없다.