전체 글
-
[JPA] Repository단에 Transactional을 선언하는 이유Spring Boot/JPA 2023. 10. 5. 22:37
적어도 일년 이상 궁금했던 의문이 풀려서 정리해본다. Mybatis를 쓰다가 처음로 JPA를 실무에 도입을 할때,위에 코드처럼 Repository단에 @Transcational를 선언하는 경우가 있었다. Service단에 @Transcational을 선언하면 Spring이 AOP로 하나의 Transcation으로 전파되는데왜 굳이 Repository에 선언해야할까?Github에 유명하신 분들 코드를 뜯어봐도,새로 이직한 회사의 코드를 뜯어봐도,ChatGPT, 구글, 공식문서 다 찾아봤지만 알 수 없었는데... 드디어 알게 되었다. 요약하면 Transaction이 너무 긴 Long Transaction이고 동시적인 요청을 받고 있을때 성능적으로 단점이 있기 때문이다. 스프링은 Transaction이 시작..
-
JPA 애플리케이션 데이터베이스 초기화Spring Boot/JPA 2023. 9. 17. 18:16
애플리케이션의 TestCode를 작성하려고 하면, 테스트를 위한 초기 데이터 (test fixture)가 필요하다. 당연히 H2 같은 in-memory DB로 테스트가 될 것을 기대하고 BeforeAll, AfterAll로 Setting하는 것으로 기대했지만, 현실은 build할때 실제 DB가 붙어서 동작하고 있었다. 어떻게 하면 Test Fixture를 분리 고립시킬 수 있을까? 지금까지 결론은 build 환경에서 DB 환경을 구성하고 @Sql로 관리하는 것이 가장 조작하기 쉬운 방법으로 보인다. SpringBoot에서 제공하는 데이터베이스 초기화 Spring boot에서는 데이터베이스 변경에 대한 관리 방법을 제공한다. default 설정은 package에 entity를 감지하여 각각의 테이블을 자동..
-
[IntelliJ 필수 코드 스타일 설정] 와일드카드 * import disable, imports 자동 정리, Imports Fold 비활성화Spring Boot/인텔리제이 2023. 8. 14. 17:07
컴퓨터 살때마다 설정 새로하는데, 찾아보는데 시간 걸려서 기록해 둔다. 1. 와일드 카드로 import 되는 것 disable하기- cmd + , > java > imports 탭- 어떤 라이브러리, 패키지를 사용하는지 의존성이 더 명확해진다.Settings > Code Style > Java > imports 에 설정을 위에 처럼 바꿔준다. 2. 안쓰는 imports 자동 정리3. Imports Fold 비활성화 4. 파일 미리보기 설정- 더 이상 더블클릭 never...
-
자바 LocalDateTime 요일, 오전/오후 한국어로 변경JAVA/자바공부 2023. 8. 3. 19:03
시간을 다룰때 한국어로 변경이 필요한 경우가 있었다. 요일이랑, 오전/오후 변경을 기록한다. (Locale 같은 정보 활용하면 더 쉬운 방법이 있을 것 같은데... ) 요구사항 : 아래의 형식으로 시간 표현 8/3(목) 오전 10시 00분 내가 짠 코드 @Component public class KoreanDateFormatter { private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("a hh시 mm분"); private static final Map DAY_OF_WEEK_KO_MAP = Map.of( DayOfWeek.SUNDAY, "일", DayOfWeek.MONDAY, "월", DayOfWe..
-
[책너두 4기] 개발 서적 스터디 - 오브젝트 chapter 5 ~ 7장 요약독서/오브젝트 2023. 7. 16. 17:10
[13일 ~ 18일차 요약본] Chapter.5 책임 할당하기 GRASP 패턴을 더 살펴본다. 구현을 통한 검증 https://github.com/sendkite/oop 다형성 적용 (GRASP 패턴) POLYMORPHISM 패턴 객체의 타입에 따라 변화하는 행동이 있다면 타입을 분리하고, 변화하는 행동을 각 타입의 책임으로 할당 코드에 DiscountCondition를 인터페이스로 만들고 PeriodCondition, SequenceCondition으로 분리하여 책임 할당 변경으로 부터 보호 (GRASP 패턴) PROTECTED VARIATION 패턴 (변경 보호 패턴) 새로운 할인 조건을 추가할때 기존 PeriodCondition, SequenceCondition은 캡슐화 되어 있고, Discount..
-
개발문서 - 컨플루언스(Confluence) 입문개발공부/CS지식 2023. 7. 16. 16:49
회사에서 문서는 무형자산으로 시간이 갈수록 사업에 큰 영향을 미친다. 개발 행위는 지적자산으로 무형자산이 특히나 중요한 부분이라 생각한다. 문서가 아예 없는 회사도 경험하고, 문서 때문에 업무 하기 힘든 회사도 경험했지만, 역시 문서는 없어서는 안 되는 존재 같다. 이직하면서 회사에서 컴플루언스라는 tool을 처음 사용하게 되었는데 관련하여 정리해 본다. - 컴플루언스 공식 가이드 문서 : https://www.atlassian.com/ko/software/confluence/resources/guides/get-started/overview#hosting-options Confluence: 개요 | Atlassian Confluence Cloud는 팀을 위해 구축된 콘텐츠 공동 작업 및 관리 작업 영역..
-
[책너두 4기] 개발 서적 스터디 - 오브젝트 chapter 3 ~ 5장 요약독서/오브젝트 2023. 7. 10. 10:35
[7일차] Chapter 3. 역할, 책임, 협력 (1) 객체지향 핵심은 역할, 책임, 협력이다. 클래스도 상속도 구현하는 방식일 뿐 더 중요한 것은 협력, 책임, 역할이다. 협력 어떤 객체가 다른 객체에게 무엇인가 요청하는 것 협력은 객체를 설계하는데 문맥을 제공한다. ex) Movie를 일반적으로 생각했을때 영화 play, 극장안에 사람들을 상상한다. 하지만 예제에서는 Movie가 입장시 가격 계산을 수행한다 왜 일까? “영화 예매하기 위한 협력”하기 위해 생성한 객체이기 때문이다. 협력이 객체의 행동을 결정한다. 행동에 필요한 값이 객체의 상태를 결정한다. 객체란? 상태와 행동을 캡슐화 한 실행 단위 Chapter 3. 역할, 책임, 협력(2) 책임 객체지향에서 가장 중요한 것은 책임. 협력이 중요..
-
[도구] CloudWatch를 쉽게 볼 수 있게 해주는 cli 툴 awslogsAWS 2023. 7. 2. 01:40
클라우드와치 편리하게 볼 수 있는 도구 awslogs를 소개한다. https://github.com/jorgebastida/awslogs GitHub - jorgebastida/awslogs: AWS CloudWatch logs for Humans™ AWS CloudWatch logs for Humans™. Contribute to jorgebastida/awslogs development by creating an account on GitHub. github.com 1. M1 MAC 기준 설치 방법 brew install awslogs awslogs --version 2. 사전 필수 설정 aws cli 설치 → aws configure 설정 (링크) 3. 사용방법 # awslogs 사용법 출력 $ a..