Overview JPA를 사용하느라 Entity 클래스를 정의하다보면 static 생성자를 만들어야 할 때가 있습니다. 특히 외부에서 객체를 생성할 수 없게 protected 레벨로 기본 생성자를 만들고, Dirty Checking 방지를 위해 setter 또한 외부로 공개하지 않습니다. lombok을 같이 사용하면서 필요한 생성자를 만들고 @Builder를 생성자에 추가해 외부에서 객체를 생성할 수 있게 하는 경우도 있지만 Builder 패턴을 이용하면 필수항목과 선택적인 항목을 구분하기 어렵고, 필수항목을 따로 받을 수 있는 방법이 있긴한데 깔끔하게 잘 되진 않습니다. 이런 상황에서 다들 어떻게 개발하시나요? IntelliJ에 생성자를 기반으로 static 생성자를 만들어주는 기능이 있습니다. Bui..
소스 코드는 여기 있습니다. (commit hash: 85838b8) > git clone https://github.com/lcalmsky/jpa > git checkout 85838b8 Warning: 최종 커밋 기준으로 작성되어 있어 모든 테스트 결과를 정확히 확인할 순 없으니 참고 부탁드립니다. Overview 즉시 로딩(EAGER)과 지연 로딩(LAZY)에 대해 알아봅니다. 지연 로딩(Lazy Loading) Unit를 조회하면서 Factory의 정보가 필요하지 않을 때 굳이 Factory를 같이 조회할 필요가 없습니다. 그럴 때 지연 로딩을 사용합니다. 사용법은 간단합니다. 매핑관계를 지정한 애너테이션에 fetch 속성을 FetchType.LAZY로 설정하시면 됩니다. package com.t..
소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem Given an unsorted array of integers nums, return the length of the longest consecutive elements sequence. You must write an algorithm that runs in O(n) time. Example 1: Input: nums = [100,4,200,1,3,2] Output: 4 Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4. Example 2: Input: nums = [0,3,7,2,5,8,4,6,0,1] Outp..
소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem There are n children standing in a line. Each child is assigned a rating value given in the integer array ratings. You are giving candies to these children subjected to the following requirements: Each child must have at least one candy. Children with a higher rating get more candies than their neighbors. Return the minimum number of candies you need to have ..
소스 코드는 여기 있습니다. (commit hash: 85838b8) > git clone https://github.com/lcalmsky/jpa > git checkout 85838b8 Warning: 최종 커밋 기준으로 작성되어 있어 모든 테스트 결과를 정확히 확인할 순 없으니 참고 부탁드립니다. Overview 즉시 로딩(EAGER)과 지연 로딩(LAZY)에 대해 알아봅니다. 지연 로딩(Lazy Loading) Unit를 조회하면서 Factory의 정보가 필요하지 않을 때 굳이 Factory를 같이 조회할 필요가 없습니다. 그럴 때 지연 로딩을 사용합니다. 사용법은 간단합니다. 매핑관계를 지정한 애너테이션에 fetch 속성을 FetchType.LAZY로 설정하시면 됩니다. package com.t..
소스 코드는 여기 있습니다. (commit hash: ba15d2d) > git clone https://github.com/lcalmsky/jpa > git checkout ba15d2d Warning: 최종 커밋 기준으로 작성되어 있어 모든 테스트 결과를 정확히 확인할 순 없으니 참고 부탁드립니다. Overview 객체간 상속을 이용하지만 실제로는 Entity나 Table과 관계가 전혀 없을 때 사용하는 @MappedSuperclass에 대해 알아봅니다. @MappedSuperclass 객체에서 공통 속성을 추상 객체로 이동시키고 자식 객체들이 해당 속성을 공통으로 사용하는 것은 매우 흔한 일입니다. 이전 포스팅에서는 Entity 간 관계(슈퍼타입, 서브타입)도 중요했었는데요, 여기서 다룰 내용은 E..
소스 코드는 여기 있습니다. (commit hash: c93b796) > git clone https://github.com/lcalmsky/jpa > git checkout c93b796 Warning: 이번 소스 코드는 최종 커밋 기준으로 작성되어 있어 모든 테스트 결과를 정확히 확인할 순 없으니 참고 부탁드립니다. Overview 객체의 상속관계를 테이블로 어떻게 표현할 수 있는지 알아봅니다. 슈퍼타입, 서브타입 관계 관계형 데이터베이스에는 상속 관계가 존재하지 않습니다. 반면 객체는 상속관계를 나타낼 수 있는데요, 이 상속과 유사한 방법이 DB 모델링 기법에도 존재합니다. 바로 슈퍼타입, 서브타입 관계인데 확장된 ER 모델이라고 부릅니다. 슈퍼-서브 타입이 도출되는 과정은 다음과 같습니다. 공통된..
소스 코드는 여기 있습니다. (commit hash: 6695e56) > git clone https://github.com/lcalmsky/jpa > git checkout 6695e56 Overview 다양한 연관관계에 대해 알아봅니다. 연관관계 매핑시 고려해야할 사항이 3가지가 있습니다. 방향(단방향, 양방향) 연관관계의 주인 다중성 이중 두 가지는 이미 이전 포스팅에서 살펴보았으므로 다중성에 대해 알아보겠습니다. 다중성 사실 다중성도 이전 포스팅에서 다루긴했지만 다시 한번 개념을 정리해보겠습니다. DB 관점에서의 다중성을 말합니다. JPA는 객체를 테이블에 매핑하기 위해 다양한 애너테이션을 사용하는데 이 중 다중성에 해당하는 애너테이션은 다음과 같습니다. @ManyToOne: 다대일 @OneToM..
소스 코드는 여기 있습니다. (commit hash: 0bacabb) > git clone https://github.com/lcalmsky/jpa > git checkout 0bacabb Overview 연관관계 매핑 예제를 구현합니다. 테이블 구조 객체 구조 구현 테이블 구조에서 확인했다시피 FK를 가지는 테이블은 orders, order_item 두 가지이고, 객체 기준으로는 Order, OrderItem이 연관관계의 주인이 됩니다. 따라서 Order가 Member를 @ManyToOne으로 가지고, @JoinColumn(name = "member_id")을 사용해 join 할 수 있습니다. OrderItem이 Order를 @ManyToOne으로 가지고, @JoinColumn(name = "order..
소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem Given an integer array nums of size n, return the minimum number of moves required to make all array elements equal. In one move, you can increment or decrement an element of the array by 1. Test cases are designed so that the answer will fit in a 32-bit integer. Example 1: Input: nums = [1,2,3] Output: 2 Explanation: Only two moves are needed (remember each ..
- Total
- Today
- Yesterday
- 스프링부트
- Spring Data JPA
- QueryDSL
- Spring Boot Tutorial
- Java
- spring boot application
- spring boot app
- 함께 자라기 후기
- Jackson
- 스프링 데이터 jpa
- spring boot jwt
- r
- JPA
- 스프링 부트 애플리케이션
- 알고리즘
- 스프링 부트 회원 가입
- Linux
- 헥사고날 아키텍처
- leetcode
- 스프링 부트
- Spring Boot
- 함께 자라기
- @ManyToOne
- 클린 아키텍처
- 스프링 부트 튜토리얼
- proto3
- gRPC
- JSON
- intellij
- Spring Boot JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |