전체 글

개발에 관련된 학습 내용들을 기록하는 공간입니다.
JPA/Spring Data JPA

[QueryDsl] Spring boot 3.0 이상 gradle 설정

개요 QueryDSL은 정말 좋은 라이브러리이지만 설정이 조금 까다롭다는 단점이 있다. 특히 Spring Boot 버전이 3.xx 대로 올라오면서 기존 설정들이 제대로 동작하지 않는 문제가 발생하였다. 이러한 문제들을 해결한 QueryDsl 설정들을 기록 및 공유하려고 한다. 환경 Spring Boot : 3.0.3 Spring Data Jpa : 3.0.2 JDK : 17 IDE : Intellij - 3.3 🌊 build.gradle plugins { id 'java' id 'org.springframework.boot' version '3.0.3' id 'io.spring.dependency-management' version '1.1.0' //querydsl 추가 id "com.ewerk.grad..

IDE/Intellij

[Debug] Intellij의 디버깅모드 코드 실행 [Evaluate, Watch]

최근 Spring Security 원리와 구조에 대해 학습하고 있다. Authentication 객체에 break point를 걸어 어떤 메서드와 필터가 호출되는지 확인하던 와중에 디버깅 모드에서 코드를 실행할 수 있는지에 대해 찾아보게 되었다. 찾아본결과 2가지의 방법으로 디버깅 모드에서 코드를 실행할 수 있었다. Intellij 의 New UI를 사용한 상태입니다. 🧩 Evaluate 하단 디버거 탭에서 ㆍㆍㆍ [more] 버튼을 클릭하면 Evaluate Expression 을 실행할 수 있다. 윈도우 단축키는 Alt+F8이다. 다음과 같은 화면에서 Expression 입력란에 코드를 입력하고 Enter를 누르면 Result 란에 코드에 대한 결과값을 확인할 수 있다. 단, 모든 코드를 사용할 순 없..

IDE/Intellij

[git] Intellij에서 git conflict 해결하기

팀 프로젝트를 진행하면서 다른 브랜치에 있는 코드를 가져와야할 일이 생겼다. 대략적인 상황은 다음과 같다. 기능을 개발할 때 dev 브랜치에서 feat 브랜치를 따서 작업을 하고 다시 dev 브랜치에 merge 하는 방식으로 작업을 진행하고 있었다. 이렇게 작업을 진행하던 도중, 테이블 구조를 변경해야할 일이 생겨서 다른 팀원분이 Entity를 수정하고 dev 브랜치에 코드를 merge 한 상태였기 때문에 나는 feat 브랜치에서 dev 브랜치로부터 코드를 받아와야하는 상황이였다. 다른 브랜치에서 코드를 받아올 때 사용할 수 있는 명령어는 다음과 같다. git merge [브랜치명] git pull [브랜치명] git merge origin dev git pull origin dev 또는 Intellij..

Database

[MySQL] - 인덱스 (INDEX) 정리 (동작 방식, 생성, 삭제, 설계)

인덱스란? 인덱스는 데이터베이스에서 데이터를 조회할 때 결과를 빠르게 추출하도록 도와주는 하나의 '데이터베이스 개체'입니다. 마치 사전의 '찾아보기'와 같은 역할을 한다고 생각하시면 됩니다. 결국, 인덱스에 따른 결과 값에 차이는 없고 단지 조회 성능을 개선하는 용도로 사용됩니다. 실무에서는 현실적으로 인덱스 없이 DB 운영이 불가능합니다. 하지만 인덱스가 무조건 있다고 해서 좋은 것은 아니며, 추가적인 DB 공간이 필요하고 데이터 변경 작업시 오히려 성능 저하를 불러일으킬 수 있기 때문에 꼭 필요한 컬럼에 인덱스를 생성해야합니다. 인덱스 특징 장점 적절한 인덱스를 생성하고 사용하면 조회 성능을 획기적으로 개선할 수 있음 [검색 속도 향상 & 시스템 성능 향상] 단점 인덱스는 대략 테이블 크기의 10% ..

생각 정리

SW 마에스트로 - 14기 합격 후기 (심층 면접 & 자소서 & 1, 2차 코테)

개요 작년부터 개발자에 대한 꿈이 확고해지면서 개발 역량을 키우기 위해 많은 노력들을 했다. 프로그래밍 언어나 CS에 대한 높은 지식을 가지고 있던 것도 아니었기에 남들보다 뒤처졌다고 생각했다. 때문에 책이나 강의를 통해 부족하다고 생각되는 개발 역량, 지식에 대해 차근차근 익혀나갔다. 그렇게 혼자 학습하다 보니, 내가 올바른 방향으로 나아가고 있는 건지에 대한 의문점이 생겼다. 군대에서 만났던 개발자분이 계셔서 대략적인 방향에 대해서는 알고 있었지만, 나의 지식이 매우 얕았기 때문에 어디서부터 어디까지 채워나가야 할지 막막했다. 그러던 와중 부트캠프라는 존재에 대해 알게 되었고 부트 캠프의 종류도 매우 다양하다는 것도 알게 되었다. 특히, 우테코 / SSAFY / SW 마에스트로는 워낙 유명했기에 그런..

JPA/Spring Data JPA

[JPA] 복합키 매핑하기 (@EmbeddedId, @MapsId, isNew())

JPA에서 식별자를 둘 이상 사용하려면 별도의 식별자 클래스를 만들어야한다. 이 경우, 식별 관계를 매핑하기 위해 실수했던 부분과 직접 ID값을 할당할 때 발생할 수 있는 문제점에 대해 기록하려고 한다. 🔑 복합키 : 비식별 관계 매핑 - @EmbeddedId 둘 이상의 컬럼으로 구성된 복합 기본 키를 매핑하기 위해서는 별도의 식별자 클래스를 생성해야한다. 다음의 RECRUIT_CATEGORY 테이블은 CATEGORY 테이블의 PK인 category_id와 RECRUITMENT 테이블의 PK인 recruiment_id 를 FK로 받아, 복합 키로 사용한다. JPA에서는 @IdClass 와 @EmbeddedId 2가지 방법으로 복합키를 매핑할 수 있다. @EmbeddedId 가 조금 더 객체지향에 가까운 ..

KAispread
기억의 정류장