목록Java (13)
우당탕탕
isNew() 메서드를 활용하여 select 쿼리를 방지하고 데이터 삽입 성능을 최적화하는 방법 1. Persistable 인터페이스란?JPA에서는 엔티티 객체의 상태를 관리하기 위해 다양한 방법을 제공한다. 그중 하나가 Persistable 인터페이스이다.이 인터페이스는 엔티티가 새로 생성된 상태인지, 아니면 이미 존재하는 상태인지를 판단하는 isNew() 메서드를 제공하며 오버라이드하여 사용이 가능하다.2. isNew() 메서드의 역할isNew() 메서드는 JPA가 엔티티의 상태를 결정하는 데 사용되며 return 값으로 true와 false 값을 반환할 수 있다. 만약 true를 반환한다면 JPA는 해당 엔티티를 새로운 것으로 인식하고 insert 쿼리를 수행하고 반대로 false를 반환하면, J..
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException Spring boot 2.6 이후의 버전에서 matching-strategy의 값이 ant_path_matcher에서 path_pattern_parser로 변경되었다. 이러한 과정에서 오류가 발생하고 있는 것이었다. 해결방법으로는 application.yaml 파일에서는 spring: mvc: pathmatch: matching-strategy: ant_path_matcher application.propertie..
IntelliJ Plugin 오늘은 내가 쓰고 있는 IntelliJ의 플러그인들에 대해 추천해보려 한다. ( 나중에 나도 다시 환경설정을 할때 다운로드하기 위해.. ) 아래 추천하는 플러그인들 중에서 유용하다고 생각하는 것들만 다운로드하여서 써보면 좋을 거 같다. 1. CodeGlance Pro 개발을 하다 보면 마우스 휠이나 터치패드로 내리기 귀찮을 정도로 긴 코드를 볼 때가 존재한다. 이럴 때 이 플러그인을 사용하게 되면 아래 사진의 화살표와 같이 코드를 축약해서 보여준다. 마우스로 클릭 한 번이면 해당 위치로 이동이 가능하게 된다. 가끔 프로젝트를 하다 보면 엄청 긴 코드를 보게 되는데 이때 유용하게 사용하고 있다. 2. GitToolBox 이 플러그인은 인텔리제이 왼쪽 프로젝트 창에서 현재 브랜치..
ControllerAdvice와 ExceptionHandler에 대해 @ExceptionHandler란? @ExceptionHandler란 Bean에서 발생하는 예외를 잡아 하나의 메서드에서 처리해주는 어노테이션이다. ExceptionHandler 어노테이션에 설정한 예외가 발생한다면 해당 handler가 작동하며 어노테이션 옆에 value 값을 줘서 캐치할 예외를 설정해 줄 수 있다. ( 여러 예외를 한 곳에 넣을 수도 있다 ) 해당 내용은 아래의 코드를 통해 확인해보자 @RestController public class ExceptionController { // 한개만 설정할 경우 @ExceptionHandler(NullPointerException.class) public String allExc..
가비지 컬렉션 알고리즘 이 글은 [Java] 가비지 컬렉션(Garbage Collection)이란? 의 2편이다. ( GC에 대한 자세한 내용은 1편을 참고 ) 1편에서 GC 알고리즘 종류에 대해 말을 했었다. 1. Serial GC 2. Parallel GC 3. Parallel old GC 4. CMS(Concurrent Mark & Sweep) GC 5. G1 GC(Garbage First GC) 대충 이런 알고리즘이 있었는데 이에 대해 하나하나 알아보도록 하자 1. Serial GC Serial GC의 경우 Young 영역과 Old 영역이 다르게 실행된다. Young 영역의 경우 1편에서 설명한 Mark Sweep 방식으로 수행되지만 Old 영역의 경우 Compact 가 추가된 Mark Sweep..
가비지 컬렉션(GC)이란? 가비지 컬렉션(Garbage Collection , GC) 가비지 컬렉션이란 개발자가 동적으로 할당한 메모리 영역 중 더 이상 사용하지 않는 자원을 해제하는 기능이다. Java의 경우 개발자가 직접 메모리를 해제하지 않아도 JVM의 가비지 컬렉터가 알아서 정리해준다. (JVM 메모리 구조 중 Heap영역에서 사용하지 않는 객체를 삭제한다. 아래의 그림 참조 ) 아래의 예시 코드로 한번 알아보자 Car car = new Car("K5"); car = new Car("K3"); 처음에 K5라는 차가 생성되고 car는 K5를 바라보고 있다 이때는 가비지가 존재하지 않는다. 하지만 이후 K3라는 차가 생성되고 car는 K3를 바라보게 된다. K3를 바라보게 되는 순간부터는 K5라는 차..
