본문 바로가기

전체 글173

commit 메시지에 자동으로 branch명 추가해보기 Git 으로 버전관리 하다 보면 많은 feature 브랜치를 생성하게 되는데, pr 후 머지를 한다던지, 릴리즈를 하게 되면 해당 브랜치를 보통 삭제를 하게 된다. 삭제하고 나면 나중에 커밋 메시지로 어느 브랜치인지 알수 없고, 한눈에 들어오지 않기 때문에 커밋 메시지에 자동으로 브랜치명을 추가하는 방법을 알아보도록 하자. 아무 repository 나 접근해서 cd .git/hooks 해보면 다음과 같다. .sample 확장자로 되어 있는 파일이 있는데, 이것들이 Git 에서 지원하는 Hook 입니다. 커밋 메시지에 자동으로 브랜치명을 추가할 것이니까 prepare-commit-msg 파일을 만들어야 한다. (.sample 확장자를 제거해 주면 된다.) 1. prepare-commit-msg 파일을 아래.. 2020. 11. 4.
Webflux Functional Endpoints 시작하기 Webflux 는 아래 처럼 두개의 프로그래밍 모델을 지원하는데, 이번글에서는 Functional 방식을 알아보도록 하자 Functional routing and handling Annotation-based reactive components 1. RouterFunction RouterFunction 은 기존 개발자에게 익숙한 @RequestMapping 어노테이션과 동일한 역활을 한다. 하지만 가장 큰 차이점은 RouterFunction 은 동작까지 정의한다라는 것이다. @RequiredArgsConstructor @Configuration public class Router { private final PersonHandler handler; @Bean public RouterFunction per.. 2020. 9. 30.
JPA Fetch Join과 페이징 문제 JPA 로 개발을 할때, 컬렉션을 Fetch Join 하면 페이징 조회 시 메모리에서 페이징 처리하는 문제가 있다. 데이터가 적으면 크게 상관은 없겠지만, 데이터가 많다고 한다면 큰 문제가 발생하게 된다. 아래와 같은 경고 메시지가 출력된다. 경고 메시지 HHH000104: firstResult/maxResults specified with collection fetch; applying in memory! 아래와 같이 엔티티를 정의해 보자 @Entity public class Category { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String name; @ManyToMany(mappedBy = .. 2020. 9. 22.
JPA - ManyToMany 관계시 Set과 List의 차이 JPA 로 개발을 할때, @ManyToMany 관계를 맺는 경우가 있는데, 이때 Set 과 List 의 차이점을 알고 사용하도록 하자. Category - Article 관계가 n:m 이라고 가정을 하자. @ManyToMany 관계시 List 를 사용하였을 경우 @Entity public class Category { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String name; @ManyToMany(mappedBy = "categories") private List articles = new ArrayList(); public void deleteArticle(Article article) { ar.. 2020. 8. 11.