IntelliJ IDEA를 이용해 코딩하다보면 변수나 메서드에 어디서 사용되는지 알려주는 usage, 상속 여부를 알려주는 inheritor, 관련 코드에 문제가 있음을 나타내주는 related problem, 작성자를 알려주는 code author등의 힌트를 볼 수 있습니다. 저는 개인적으로 코딩할 때 주석을 잘 사용하는 편은 아니지만 주석과 같이 사용하게 되면 상당히 거슬리기도 합니다. 게다가 git과 관련된 툴을 사용하하면 힌트를 표시하는 부분이 더욱 더 지저분해져서 코드를 보는 가독성이 떨어질 때가 있습니다. 이 외에도 상당히 많은 부분에서 힌트를 제공합니다. 이 중 파라미터 이름을 알려주거나 메서드 체이닝에서 어떤 타입을 반환했는지 바로바로 보여주는 힌트는 같은 라인에 표시되기 때문에 코딩할 때..
Overview JPA를 사용하느라 Entity 클래스를 정의하다보면 static 생성자를 만들어야 할 때가 있습니다. 특히 외부에서 객체를 생성할 수 없게 protected 레벨로 기본 생성자를 만들고, Dirty Checking 방지를 위해 setter 또한 외부로 공개하지 않습니다. lombok을 같이 사용하면서 필요한 생성자를 만들고 @Builder를 생성자에 추가해 외부에서 객체를 생성할 수 있게 하는 경우도 있지만 Builder 패턴을 이용하면 필수항목과 선택적인 항목을 구분하기 어렵고, 필수항목을 따로 받을 수 있는 방법이 있긴한데 깔끔하게 잘 되진 않습니다. 이런 상황에서 다들 어떻게 개발하시나요? IntelliJ에 생성자를 기반으로 static 생성자를 만들어주는 기능이 있습니다. Bui..
JPA를 사용할 때 Entity의 필드가 Enum인 경우, 실제 코딩시에는 Enum의 Constant를 사용하지만 DB에 저장할 땐 문자열 또는 정수로 된 코드를 저장하는 경우가 있을 수 있습니다. 이럴 때 커스텀 Converter를 만들어 AttributeConverter를 구현하여 해결하곤합니다. 그리고 JSON을 객체로 매핑할 때 해당 객체에 Enum이 포함된 경우에도 마찬가지로 비슷한 작업을 해줘야 합니다. 이 때 자주 사용되는 static 필드와 메서드가 있는데요, 예시를 하나 들어보자면, package io.lcalmsky.blogexamples.domain.entity.support; import com.fasterxml.jackson.annotation.JsonCreator; import ..
로컬 환경에서 데이터 베이스를 설정할 때 H2 Database를 많이 사용하고 특히 메모리 기반으로 동작시키는 상황이 자주 발생합니다. IntelliJ IDEA 에서 Database 탭을 활용하면 따로 접속 툴을 이용할 필요가 없어 굉장히 편리합니다. 보통 로컬에 MySQL Workbench나 H2 Database를 따로 설치해서 실행시킨 뒤 Database 탭 내에서 DataSource를 추가하여 로컬DB와 연동하는 방식을 많이 사용하는데요, 오늘 소개할 방법은 로컬에 따로 Database를 띄우지 않고 메모리 기반의 DataSource를 추가하는 방법입니다. 결과물을 보여드리기 위해 스프링 부트 프로젝트를 만들어 작성하였습니다. 설정하는 방법만 필요하신 분은 여기 참고하시면 됩니다. 소스 코드는 여기..
JPA를 다루다보면 Entity를 생성할 때 반복적으로 해줘야 할 일들이 있습니다. @Entity 애너테이션을 클래스 이름 위에 생성해줘야 하고, lombok을 같이 사용하는 경우 @Getter, @Setter 등을 경우에 따라 생성해줘야 합니다. 특히 IntelliJ Ultimate 버전을 사용하게 되면 DataSource와 자동으로 연동하여 JPA 관련된 속성들을 파악해 컴파일타임에 바로바로 에러나 경고를 표시해주기도 합니다. 그래서 계속 반복적인 작업을 하는게 귀찮기도 하고 바로바로 나타나는 빨간 줄들이 신경쓰이기도 해서 거의 기본 포맷처럼 사용하는 Entity 클래스를 Live Template 기능을 사용해 정의해봤습니다. 먼저 설정 탭에서 Live Template을 검색한 뒤 Java 항목을 찾..
IntelliJ에서 스프링 개발을 하다보면 application.properties 파일에 한글 값을 넣을 때가 종종 있습니다. 하지만 설정 값을 @Value 값을 이용해 Injection하고 출력해보면 아주 이상한 값이 출력되는 것을 확인할 수 있습니다. 이 문제를 해결하기 위해선 유니코드 인코딩을 한 뒤 설정 값에 넣어줘야 합니다. 하지만 계속 값을 인코딩하고 설정파일에 붙여넣는다면 매우 불편하겠죠. 다행히 IntelliJ에서 자동 변환을 해줍니다. Preferences - File Encodings로 들어가셔서 Transparent native-to-ascii conversion을 체크하시면 설정파일(.properties)에 한글이 포함되었을 경우 알아서 유니코드 인코딩을 해줍니다.
이클립스에선 기본으로 동작하는 기능이 IntelliJ(저는 ULTIMATE 2019.2 버전 사용 중 입니다)에서는 옵션으로 제공되네요. 설정(⌘ + ,) - Editor - General 메뉴에 진입하여 Show quick documentation on mouse move 항목을 체크하시면 됩니다. 설정 후 클래스나 메소드에 마우스 오버하게 되면 아래 처럼 자바독을 바로 확인하실 수 있습니다. 이 기능을 사용하지 않고 자바독을 확인하시고 싶으시다면 해당 옵션을 해제한 상태에서 클래스나 메소드 위에서 F1, ^J, 또는 ^+2Button클릭(일반 마우스 기준 휠 클릭)로 확인하실 수 있습니다.
CMD + Shift + A (Find Action) 입력시 터미널 실행되는 문제 맥북에서 IntelliJ IDEA를 사용할 때 액션 검색창을 띄우기위해 ⌘ + ⇧ + A 단축키를 사용합니다. 하지만 의도와 다르게 터미널이 실행되면서 man 화면이 나타나는 것을 확인할 수 있습니다. 저 같은 경우 Windows + Eclipse 조합만 사용하다가 MacOS + IntelliJ IDEA로 갈아탄지 얼마되지 않은 맥린이이기 때문에 모든 것이 낯선 상태였고, Files 검색창(⌘ + ⇧ + O)을 띄운 뒤 마우스로 Actions 탭을 클릭하는 등 처참한 수준의 능지를 자랑하며 액션 검색을 사용하였습니다. 위와 같은 방법을 열 번 정도 시도하다가 이렇게 불편한 것을 주변 개발자들이 추천했을리 없다라는 확신을 가..
- Total
- Today
- Yesterday
- JPA
- Java
- Spring Boot
- 함께 자라기 후기
- 클린 아키텍처
- gRPC
- 스프링 부트 회원 가입
- 알고리즘
- 스프링 데이터 jpa
- 스프링 부트 애플리케이션
- Linux
- @ManyToOne
- r
- proto3
- 스프링부트
- Jackson
- JSON
- Spring Boot Tutorial
- QueryDSL
- 함께 자라기
- 스프링 부트 튜토리얼
- Spring Boot JPA
- leetcode
- Spring Data JPA
- 스프링 부트
- spring boot jwt
- spring boot application
- 헥사고날 아키텍처
- spring boot app
- intellij
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |