spring

    [IntelliJ] Kotlin based 프로젝트에서 KDoc 주석 자동완성

    IntelliJ Kotlin based 프로젝트에서 Java based 프로젝트와 같이 KDoc 주석을 시도할 시 자동완성이 되지 않습니다. IntelliJ에서 플러그인 설치로 해결할 수 있습니다. + 참고로 Kotlin에서는 HTML기반의 JavaDoc이 아닌 Markdown 기반 KDoc이라는 것을 사용하며, JavaDoc의 문법을 지원합니다. KDoc 자동완성을 사용하기 하기 위해 새로운 플러그인을 설치합니다. Preferences (⌘ + ,) > Plugins > Marketplace 탭 이동 검색창에 KDoc-er 을 검색해 Install을 눌러 설치합니다. KDoc을 작성하고 싶은 함수 위에서 /** 입력 후 엔터를 누르면 함수의 파라미터를 참조하여 KDoc이 자동완성이 됩니다.

    [IntelliJ] 기본 Testing Framework 설정

    IntelliJ의 프로젝트를 Gradle로 생성하면 기본 테스트를 Gradle로 돌리게 됩니다. JUnit5로 테스트 하기 위해 Global 설정에서 Gradle 설정을 변경합니다. Preferences (⌘ + ,) > Build, Execution, Deployment > Build Tools > Gradle 탭 이동 Gradle projects 내 Run tests using을 Gradle에서 IntelliJ IDEA로 변경하면 JUnit5로 실행이 가능합니다.

    [JPA] ORM #1

    ORM(Object Relational Mapping) 정의 객체로 연결을 해준다 라는 의미 SQL언어가 아닌 Application 개발 언어로 DB에 접근 가능하게 하는 툴 Persistence (영속성) API 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성 영속성을 갖지 않는 데이터는 단지 메모리 상에서만 존재하기 때문에 프로그램 종료 후 모두 자동 소멸 Persistence Framework 기존의 JDBC 프로그래밍의 복잡함과 번거로움 없이 간단한 작업만으로 DB와 연동되는 시스템을 빠르게 개발할 수 있으며 안정적 구동 보장 SQL Mapper와 ORM으로 구분 SQL Mapper: MyBatis, iBatis ORM: JPA(인터페이스), Hibernate(JPA 구현체) ..

    2022년 회고 - last fantasy.

    늦은 감이 있지만 2022년 한 해를 기념하며 다시 한번 저를 돌아보는 회고록을 작성하게 되었습니다. #0 2022 메인 키워드 2022년에 나를 표현할 수 있는 대표적인 키워드는 ['이직', '새로운 경험', '새로운 사람'] 이다. 이 모든 키워드가 하나로 이어지는 스토리와도 같다. 이직 스타트업으로 이직하여 혼자 일하던 방식에서 여러 사람과 협업하며 일하는 것이 나의 꿈이었는데, 그 꿈을 이뤄낸 것 같다. 기존 회사에서는 체계가 없어 멋모르는 사람들과 함께 일하는 경우가 많았다. 정말 답답한 생활이었고, 스트레스도 많이 받았다. 물론 내가 모든 것을 안다고는 절대 말할 수 없는 것은 당연하다. 단지 너무 답답한 점은 많고 나는 힘이 없기 때문에 내 퍼포먼스를 100% 보여주지 못한 것에 대해 많은 ..

    자바 클래스 이름에 Impl을 사용하지 말아야 하는 이유

    자바에는 abstract 클래스를 이용한 상속과 interface를 이용한 상속이 있습니다. 저는 interface로 기본 틀을 만들어 같은 기능을 하는 클래스에 다른 로직을 적용해야 할 때 많이 사용하고 있습니다. 스프링에서 Service 기능을 만들 때 UserServiceImpl, SettingServiceImpl 이런 구현체들을 많이 보셨을겁니다. 그러다가 전에 스프링부트로 개인프로젝트를 진행하면서 문뜩 생각이 났습니다. "어쩌피 서비스 하나 구현해서 쓸건데 왜 굳이 인터페이스를 구현하고 정의해서 쓰지?" UserService라는 interface를 만들고 UserServiceImpl 이라는 클래스를 하나 구현할건데 처음부터 클래스명을 UserService라고 하고 거기에 구현하면 되지 않을까 싶..