에러메세지 Caused by: java.lang.IllegalArgumentException: Not a managed type: class com.group.libraryapp.domain.book.Book at org.hibernate.metamodel.internal.MetamodelImpl.managedType(MetamodelImpl.java:582) ~[hibernate-core-5.6.9.Final.jar:5.6.9.Final] at org.hibernate.metamodel.internal.MetamodelImpl.managedType(MetamodelImpl.java:85) ~[hibernate-core-5.6.9.Final.jar:5.6.9.Final] at org.springframe..

진행하고 있는 사이드 프로젝트에서 서버 구축을 위해 네이버 클라우드 플랫폼으로 무료 크레딧을 제공해줘서 서버 올리고 사용하고 있었다. 함께한 팀원이 이미 프로젝트에 대한 서버는 구축해주셔서 잘 사용하고 있었는데 어느날 갑작스러운 서버 장애를 겪게 되었다. 결론적으로 클라우드 서버에서 문제가 발생한 건 아니었지만 직접 구축한게 아니라 장애 처리하면서 서버에 대해 모르는 개념이 너무 많아 고충을 겪었다. 그래서 스스로 정리하며 프리티어로 웹 서버를 간단하게 구축하는 방법을 진행해보기로 한다. 네이버 클라우드 접속 후 회원가입 및 결제 정보 입력 NAVER CLOUD PLATFORM cloud computing services for corporations, IaaS, PaaS, SaaS, with Globa..
@Entity class User( var name: String, ) { fun updateName(name: String) { this.name = name } } - 생성자 안의 var property 로 name 생성 - setter 대신 함수를 만들어 update name (var property) name setter가 public 으로 열려있지만, 함수를 이용하는 것이 클린하다. 이유? 1. 함수의 이름으로 명시적으로 사용 가능 2. 여러가지 property를 한번에 업데이트 가능 setter를 private하게 만드는 법 1. backing property (_name) class User( private var _name: String ) { val name: String get() = ..
각각의 테스트를 실행하면 성공하지만, 전체 테스트를 돌리면 실패하는 이유? : Spring Context 를 공유하기 때문 //Expected size: 2 but was: 3 in: //[com.group.libraryapp.dto.user.response.UserResponse@69862a1, // com.group.libraryapp.dto.user.response.UserResponse@585718dd, // com.group.libraryapp.dto.user.response.UserResponse@5a644d75] //java.lang.AssertionError: 생성 테스트 - 조회 테스트 1. 최초 생성 테스트 : DB에 user 데이터 1명 추가 @Test fun saveUserTest(..
1 : N 관계에서 Fecth Join 사용시 발생하는 MultipleBagFetchException 해결법 1. ToOne(OneToOne, ManyToOne) 관계를 모두 Fetch Join 한다. 2. 1:N 관계의 Collection Entity는 Lazy Loading(지연 로딩)으로 조회한다. 3. Lazy Loading(지연 로딩) 성능 최적화를 위해 hibernate.default_batch_fetch_size를 적용한다. * QueryDsl 에서도 1:N 관계에서 단 한번의 fetch join 사용해야 하는 건 똑같다. ToOne(OneToOne, ManyToOne) 관계를 모두 Fetch Join 한다. 연관관계에서 자식 테이블인 ToOne 관계에서는 row 수를 증가시키지 않는다. 따..
회원 정보 조회하는 경우, 탈퇴처리된 상태의 회원은 조회가 안되도록 예외처리를 해야하는 상황이 있었다. 당시 controller-service의 역할에 대한 개념이 불명확해서 어디서 예외처리를 해줘야하는지 고민을 한참 했었다.(ㅎㅎ..하하) 그러다가 나와 비슷한 고민을 하는 분의 질문에서 프로그래밍 로직을 이렇게 한다는 답변을 보게 되었다. " view -> validation logic -> business logic -> dao " 보통의 view는 controller에서 처리하고, 여기서 예외처리는 validation logic에 해당하므로 service에 넣어주는게 맞다고 생각했다. 그리고 아주 단적으로 controller가 없더라도 API 로직은 정상적으로 돌아가야한다는 김영한님의 답을 어디선가..

github에서 Repository 생성하기 * terminal에서 명령어 입력 git 초기화 git init repository 연결 git remote add origin {repositoryURL} git remote add origin git@github.com:daeuun/project-name.git (+ 연결된 repo 삭제) 오타났으면 사용..ㅎㅎ git remote rm origin 연결된 repository fetch/push 확인 git remote -v 새로 만든 repository의 내용 가져오기 git push origin {기본브랜치명} github 정책에 의해서 기본 브랜치 이름이 master에서 main으로 변경되었다. git pull origin master stage에 ..
N+1 문제 : 조회된 부모의 수만큼 자식 테이블의 쿼리가 추가 발생하는 현상 연관 관계가 설정된 엔티티를 조회할 경우에 발생하는 문제 쿼리를 날렸을 때 의도하지 않은 쿼리가 N번 추가로 실행되는 것을 N+1이라고 한다. 해결방법 : FetchJoin * Join, Fetch Join 차이점 Join - 연관 Entity에 Join을 걸어도, 실제 쿼리에서 SELECT 하는 Entity는 오직 JPQL에서 조회하는 주체가 되는 Entity만 조회하여 영속화 - 조회의 주체가 되는 Entity만 SELECT 해서 영속화하기 때문에 데이터는 필요하지 않지만, 연관 Entity가 검색조건에는 필요한 경우에 주로 사용됨 Fetch Join - 데이터를 가져올 때 조회의 주체가 되는 Entity 이외에, Fetc..
- Total
- Today
- Yesterday
- JPA
- FetchJoin
- spring boot 3
- checkout
- 티스토리챌린지
- array
- MultipleBagFetchException
- 스프링 스케줄링
- MongoDB
- port
- 추상클래스
- Linux
- 오블완
- Git
- dto 클래스 생성자
- bucket4j
- addFilterBefore
- Java
- 배열
- Cannot construct instance of
- 자바 어플리케이션 실행 과정
- redisson 분산락
- 스프링오류
- n+1
- Spring Security
- QueryDSL
- Kotlin
- ChatGPT
- junit5
- jvm warm-up 전략
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |