Web(54)
-
[Spring] @ControllerAdvice를 활용한 예외처리
1. 예외처리 방법 try-catch 문을 활용한 예외처리 (코드의 가독성이 떨어지고 라인이 길어진다.) If 문을 활용한 예외처리 (코드의 가독성이 떨어지고 라인이 길어진다.) @ControllerAdvice 2. ControllerAdvice Controller에서 발생한 예외를 한 곳에서 관리하고 처리할 수 있게 도와주는 어노테이션 스프링에서는 예외처리를 전역으로 핸들링 하기위해 @ControllerAdvice 어노테이션을 사용 할 수 있다. BindException이 공통적으로 발생했을때 해당 응답을 response 처리해주는 로직의 예시이다. @RestController @RestControllerAdvice @Slf4j public class CommonExceptionAdvice { @Exc..
2022.11.21 -
[JPA] Querydsl에서 (group_concat) MySql 특수함수 사용하기
1. MySql 환경에서 JPA + Querydsl 조합에서 group_concat을 사용하는 방법 아무런 설정 없이 Expressions.stringTemplate() 함수를 이용해서 group_concat 사용하는 경우 아래와 같은 에러발생 java.lang.IllegalArgumentException: No pattern found for GROUP_CONCAT SQLExpressions.groupConcat을 사용해서 group_concat을 사용하는 방법도 있지만, 해당 설정은 의존성과, 설정이 조금 복잡하기 때문에 Expressions.stringTemplate 기반으로 group_concat을 사용하는 방법 2. 설정 방법 public class MySqlCustomDialect extend..
2022.11.18 -
[JPA] Hibernate5 네이밍 룰 변경해서 적용하기(Camel -> Snake)
1. Implict Naming Strategy (암시적 명칭 전략) 해당 방식은 명시적으로 naming이 지정되지 않은 Entity들의 명칭을 만들어주는 방식이다. @Table, @Column 등의 방법으로 명칭을 미리 지칭한 경우 해당 전략은 적용되지 않는다. 해당 방법은 기본적으로 ImplictNamingStrategyJpaComliantImpl 방식을 따르며, JPA에 정의한 변수, 클래스 그대로 적용 만약 사용자가 직접 전략을 구상하고 싶다면 ImplicitNamingStrategy 인터페이스나 해당 자식 클래스들을 상속받아 구현 적용 예시) https://riptutorial.com/hibernate/example/10369/creating-and-using-a-custom-implicitna..
2022.11.18 -
[JAVA] Enum 사용하여 DB에 값 저장하고 조회하기
2. @Enumerated Enum 의 값을 DB에 이름 그대로 저장하기 위하여 Entity 컬럼에 해당 어노테이션을 선언하여 사용한다. 하지만, Enum 의 값이 변경되거나, 순서가 변경 되었을 경우 DB에 저장된 값과 매칭되지않아 문제가 발생한다. 그래서 현업에서는 잘 사용되어지지 않는다. 2. @Converter @Enumerated 대신 AttributeConverter을 구현한 Class에 @Converter 어노테이션을 사용하여 원하는 값을 DB에 저장할수있다. AttributeConverter 예시 convertToDatabaseColumn(Menu menu) : enum을 DB에 어떤 값으로 넣을 것인지 정의 converToEntityAttribute(String menuName) : DB..
2022.11.18 -
[Elastic Search] RestHighLevelClient 를 사용하여 데이터 삽입 방법
- 엘라스틱 용어에 대해 좀더 이해하기 쉽도록 RDBMS 랑 비교해보았다. 1 . 현재 Java에서는 Elastic Search와 연동하기위해 RestClient를 사용하고 있다. - Java High Level REST Client라고도 불린다. - HTTP 방식을 이용해 엘라스틱서치와 통신한다. - 내부적으로는 HttpClient 모듈을 사용한다. 2. Config를 통해서 Elastic Search 서버 연결 3. Document API 를 통해서 문서추가 및 조회
2022.11.07 -
[Spring] AOP @AfterReturing 사용해보기
- Advice는 실질적으로 프록시에서 수행하게 되는 로직을 정의하게 되는 곳입니다. 스프링에서는 Advice에 관련된 5가지 애노테이션을 제공합니다. 어노테이션은 메서드에 붙이게 되는데 해당 메서드는 advice의 로직을 정의하게 되고, 어노테이션의 종류에 따라 포인트컷에 지정된 대상 메서드에서 Advice가 실행되는 시점 을 정할 수 있습니다. 또한 속성값으로 Pointcut을 지정 할 수 있습니다. @AfterReturning 조인 포인트가 정상 완료 후 실행(실제 target 메서드 수행 완료 후 실행) 반환값 자체는 조작 불가능 반환값 내부에 setter같은 수정자가 있따면 내부값은 수정 가능 @AfterReturing은 조인 포인트가 정상적으로 실행되고 값을 반환할 때 실행됩니다.(타겟 메서드..
2022.10.26