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

java 7

[ 개발 이슈 해결 ] @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

[ F-lab ] 멘토링 5주차 회고록 : 습관

우리 인생에서 가장 강력한 힘은 "습관"이다. 서론 다섯 번째 멘토링 시간이 되었다. 벌써 내가 멘토링을 시작한 지 한 달이라는 시간이 지났다는 이야기였다. 총 4개월 과정인데, 벌써 4분의1이 지나간 것이다. 한 달이라는 짧은 시간이었지만 분명 많은 변화가 있었다. 생각의 변화, 지식의 변화.. 그리고 습관의 변화였다. 단순히 구현만 생각하는 개발자가 아니라, 기초와 지식이 얼마나 중요한지, 그리고 Why라는 생각이 왜 중요한지를 알게 되었고, 하루하루 조금씩 늘어가는 지식의 즐거움을 알게되었다. 무엇보다 공부를 진득히 할 수 있는 습관이 내 안에 생겼다. * 4주차 멘토링에서는 개발 피드백과, 이력서 피드백이 주 내용이어서, 다른 질문들은 없었다. 그러나 베타적 잠금을 해결하는 방법을 생각하여 CRU..

일반 회고록 2023.11.23

[ F-lab ] 멘토링 4주차 회고록 : 새로운 시각 (개발)

모르는 것을 알게 되었다면 반드시 공부해서 내 것으로 만들자 서론 네 번째 멘토링 시간이 되었다. 이번에는 멘토님 사정으로 평소보다 조금 늦은 시간에 멘토링을 진행하게 되었고, 대신 2시간 가량 멘토링을 진행하였다. 그리고 오늘은 개발을 하면서 꼭 알아야 하는 새로운 시각을 갖게 되었다. 3주차 멘토링에서 질문 받았던 부분을 공부한 후에 블로그에 정리하였다. 1. RAM 과 Disk 의 차이는? 2. 시스템 버스란? 3. Java에서 연산자란? 형변환이란? 그리고 메모리 오버플로우에 대해서 설명하시오. 4. Java에서 파일을 쓰는 과정을 OS와 인터럽트 그리고 I/O 관점에서 설명하시오. 5. String a = "Hi"; 와 String a = new String("Hi"); 의 차이를 메모리 관점에..

일반 회고록 2023.11.15