기록하며 성장한다 - 개발, 회고

Spring 5

[ 개발 이슈 해결 ] @Transactional 어노테이션이 있는데, 정상적으로 롤백이 이루어지지 않았던 문제점 해결

1.1. 문제점 필자의 회사는 빅데이터 회사이고, 빅데이터 솔루션을 개발할 때에 Java 와 Spring 을 통해 개발을 진행한다. 이 때 Spring 을 사용 할 때 회사 자체내에서 유지보수를 용이하게 하기 위한 자체 프레임워크를 개발해 두었는데, 해당 프레임워크를 활용하여 개발하는 것이 방침이다. @Override @Transactional public Object mainService(String serviceId, String serviceDtlOpt, Map inputParamMap) throws CustomCommonException { switch (serviceDtlOpt) { case "A": return aMethod(serviceId, inputParamMap); case "B": r..

[ 개발 회고록 ] 테스트 코드 작성 시, @Transactional 어노테이션을 사용하는 것에 대한 짧은 생각

현재 필자가 진행하고 있는 배달 토이프로젝트가 있다. ( 프로젝트 링크 > 필자 TIL 블로그 ( 트랜잭션 ) 3. 결론 @Tranasactional 어노테이션을 테스트 코드에서 무조건 쓰지 말라는 것이 아니다. 필요한 부분에서는 충분히 사용할 수 있다. 그러나, 위와 같은 문제점이 발생할 수 있다는 것을 알아야 테스트에서 발생하는 여러 문제들을 사전에 막을 수 있고, 발생하여도 대처할 수 있다. 그래서 특히, @Transactional 이 붙은 실제 서비스 메서드를 테스트 할 때는 더욱 주의해야 한다. 마지막으로 적어도 팀 내에서는 @Transactional 을 테스트 코드에서 사용할 지 말지를 통일 하는 것이 좋다고 생각한다. @Transactional 을 사용하지 않을 거라면, 명시적으로 데이터를 ..

개발 회고록 2024.01.10

[ 개발 회고록 ] 병렬 프로그래밍과 비동기 구현

해당 포스팅은 JPA native Query와 Spring Boot를 이용한 CRUD 개발 4편이다. F-lab 멘토링 과제를 위한 개발을 진행중이며, 멘토님께 피드백을 받으며 개발을 할 때 신경써야 하는 부분을 찾아가고 있다. 이전 글 getBoardViewRedis(boardId)); return boardFuture.thenCombine(redisViewFuture, (board, redisView) -> { BoardVo boardVo = BoardVo.fromBoardEntity(board); boardVo.setBoardView(board.getBoardView() + redisView); double averageScore = scoreRepository.getBoardAverageScore..

개발 회고록 2023.11.29

[ 개발 회고록 ] 게시글 평균 점수 기능을 구현해보자

해당 포스팅은 JPA native Query와 Spring Boot를 이용한 CRUD 개발 3편이다. F-lab 멘토링 과제를 위한 개발을 진행중이며, 멘토님께 피드백을 받으며 개발을 할 때 신경써야 하는 부분을 찾아가고 있다. 이전 글 Entity 과정을 거치는데, 불러올 때는 Entity -> VO 순서를 거친다. 불러올 때는 아직 DTO를 만들 필요가 없다고 느꼈기 때문이다. 아무튼 VO에 averageScore 라는 필드를 추가하여, 거기에 Set을 시켜준다. Controller @PostMapping("/board/score/register") public ResponseEntity registerScore(@Valid ScoreDto scoreDto, HttpSession session) { ..

개발 회고록 2023.11.27