브랜치 생성, 삭제, 조회, 체크아웃 브랜치 생성 git branch 생성할브랜치명 분기해서나올브랜치명 $ git branch testbranch master -> master 브랜치에서 testbranch 이라는 브랜치를 생성한다. 브랜치 삭제 로컬 브랜치 삭제 git branch -d 브랜치명 $ git branch -D branchname Deleted branch branchname (was e7f33f9). -d 옵션 : 브랜치에 병합되지 않은 변경 사항, 푸시되지 않은 commit 이력이 있으면 -d 로 로컬 브랜치를 삭제할 수 없다. 이런 경우 -D 옵션을 이용하여 브랜치를 삭제할 수 있다. git branch -D 로컬브랜치명 -D 옵션 : --delete --force(강제 삭제)의 줄임..
Enum 클래스를 만들고, Entity의 해당하는 컬럼을 Enum클래스로 type 변경 enum class BookType { COMPUTER, ECONOMY, SOCIETY, LANGUAGE, SCIENCE, } //val type: String, val type: BookType, 컬럼에 Enum 타입을 지정해주지 않으면? 디비에 0, 1, 2,... 처럼 순서대로 숫자 데이터가 들어간다. 문제점 1. 기존 Enum 의 순서가 바뀌면 치명적인 오류가 발생할 수 있다.! 2. 기존 Enum 타입의 삭제, 추가가 제한적이라 유지보수에 좋지 못하다. @Enumerated(EnumType.STRING) 타입을 지정하면, (여기서는 STRING 으로 지정한다.) 지정된 타입으로 Enum class의 데이터가 ..
에러메세지 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 로직은 정상적으로 돌아가야한다는 김영한님의 답을 어디선가..
- Total
- Today
- Yesterday
- spring boot 3
- Spring Security
- MongoDB
- array
- bucket4j
- ChatGPT
- Cannot construct instance of
- port
- JPA
- Linux
- 티스토리챌린지
- checkout
- Kotlin
- 스프링 스케줄링
- 스프링오류
- Git
- 추상클래스
- addFilterBefore
- 오블완
- dto 클래스 생성자
- n+1
- junit5
- 배열
- MultipleBagFetchException
- redisson 분산락
- 자바 어플리케이션 실행 과정
- jvm warm-up 전략
- Java
- FetchJoin
- QueryDSL
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |