
propagation이란?스프링에서 트랜잭션이 걸린 새로운 함수를 호출할 때 진행 중인 트랜잭션 안에서 처리할지 따로 처리할지 개발자가 옵션을 선택할 수 있게 해주는 속성이다. (번식, 전파) 트랜잭션이란?여러 연산을 하나의 연산으로 묶어주는 역할을 한다.데이터 정합성을 보장하기 위해 사용한다.ex) A가 B에게 계좌이체할 때 A 계좌에서 출금이 이루어지고, B 계좌에서 입금이 이루어진다. 이때 출금, 입금 중 하나라도 실패를 하게 되면 데이터 정합성 불일치 문제가 생길 것이고(A 계좌에서 출금만 이루어짐 or B 계좌에서 입금만 이루어짐), 이는 서비스 운영 시 심각한 문제를 야기할 수 있다. 대표적인 두 가지 속성REQUIRED, REQUIRES_NEW 대표적으로 두가지 속성이 사용된다. REQU..

N + 1 이란?쿼리가 1번만 나가길 기대했는데 N번이 추가적으로 실행돼서 애플리케이션 성능에 안 좋은 영향을 끼치는 문제입니다. 각 팀에 속한 회원 수를 가져와야 하는 요구사항이 있다고 가정해 보겠습니다.@Getter@NoArgsConstructor@AllArgsConstructor@Builder@Entitypublic class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn private Team team;}@Getter@NoArgsConstru..
@Builder 사용 시 발생했던 에러에 대해 다뤄보려고 합니다. @Builder란?반복되는 코드를 줄여주는 라이브러리인 Lombok에서 제공하는 어노테이션으로빌더 패턴을 직접 구현하지 않더라도 사용할 수 있습니다.보통 클래스, 생성자 위에 붙여 사용합니다. 그래서 왜 조심해야 할까? 개발 환경은 다음과 같습니다.IntelliJSpring Boot 2.7.4 첫 번째먼저 예시를 들어보겠습니다!@ToString@Builderpublic class User { private String name = "***님"; private String password; private List books = new ArrayList();}public class Main { public static ..

멀티모듈이란한 프로젝트 안에 여러 개의 모듈이 존재하는 것을 말합니다.모듈은 작은 프로젝트라고 생각하면 될 것 같습니다. 멀티모듈 장점모듈마다 필요한 의존성을 설정할 수 있어서 응집도 높은 코드 작성 가능루트 프로젝트에서 전체 모듈의 의존성 관리 가능중복되는 코드를 모듈로 분리하여 코드 중복을 줄임독립적으로 배포 가능 멀티모듈 사용이유토이 프로젝트에서 배치를 사용하게 되었습니다.배치 서버는 실시간으로 처리하기 어려운 대용량 데이터를 다룰 때 사용합니다. API 요청과 배치 작업이 서로에게 영향을 주어 서버에 부하가 집중되는 것을 방지하기 위해 분리했습니다. 멀티모듈 생성루트 프로젝트 우클릭 후 Module... 을 클릭합니다. 모듈 이름과 필요한 의존성을 추가합니다. (프로젝트를 생성하는 것과 동일)그..
Lint란?코드 컨벤션이 문서로만 되어 있으면 과연 잘 지켜질까요? 아마 잘 지켜지지 않을 것입니다. 빼먹는 경우도 많을 것이고, 규칙을 알고도 잘 못 사용하는 상황이 생길 것입니다.이때 코드 컨벤션, 코드의 오류나 버그를 지속적으로 확인하고, 미리 알려주는 도구가 Lint입니다. ktlint vs detekt코틀린에서 가장 흔히 쓰이는 린트에는 ktlint, detekt 두 가지가 있습니다. ktlint는 Kotlin의 공식 가이드의 규칙을 포함하여 코드 스타일을 검사하고, 맞춰주는 도구입니다.detekt는 코드포맷팅보다는 코드 복잡성, code smell 탐색과 같은 코드 분석에 초점을 둔 도구입니다. ktlint는 선택한 이유코드 컨벤션 유지와 코틀린 공식 코드 컨벤션에 초점을 맞춘 ktlint가 ..
- Total
- Today
- Yesterday
- 테스트 코드
- webhook
- 자동화
- H2
- N + 1
- 성능 개선
- lombok
- lint
- Slack
- 계층형 아키텍처
- Spring Boot
- detekt
- Gradle
- embedded redis
- 인텔리제이
- propagation
- multi module
- ktlint
- IDE
- JPA
- 헥사고날 아키텍처
- transaction
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |