반응형 전체 글297 스프링부트에서 커스텀 예외 설정하기 커스텀 예외 스프링부트에서 표준 예외가 아닌 사용자가 직접 구현하는 커스텀 예외 처리하는 방법에 대해 알아보겠습니다. 커스텀 예외란? 커스텀 예외를 만들어서 사용하면 네이빙에 개발자의 의도를 담을 수 있기에 이름만으로도 어느정도 예외 상황을 짐작할 수 있다. 커스텀 예외를 사용하면 애플리케이션에 발생하는 예외를 개발자가 직접 관리하기 수월해진다. 커스텀 예외는 개발자가 직접 코드로 관리하기 때문에 책임 소재를 애플리케이션 내부로 가져올 수 있게 된다. 이를 통해 예외 상황이 발생한 경우 한 곳에서 처리하며 특정 상황에 맞는 예외 코드를 적용할 수 있게 된다. 표준 예외를 사용하면 의도하지 않은 예외 상황도 정해진 예외 처리 코드에서 처리하기 때문에 어디에서 문제가 발생했는지 확인하기 어렵지만 커스텀 예외.. Book/스프링부트 핵심가이드 2023. 11. 25. 스프링부트 예외 처리 예외처리 자바에서는 예외 처리를 try/catch/throw 구문을 활용하여 처리하는데, 스프링부트에서 적용할 수 있는 예외 처리 방식에 대해 알아보겠습니다. 예외 & 에러 예외(exception) 프로그래밍에서 예외(exception)란 입력 값의 처리가 불가능하거나 참조된 값이 잘못된 경우 등 애플리케이션이 정상적으로 동작하지 못하는 상황을 의미한다. 예외는 개발자가 직접 처리할 수 있는 것이므로 미리 코드 설계를 통해 처리할 수 있다. 에러(error) 주로 자바 가상머신에서 발생시키는 것으로서 예외와 달리 애플리케이션 코드에서 처리할 수 있는 것이 거의 없다. 대표적으로 메모리 부족(OutOfMemory), 스택 오버플로(stackOverFlow) 등이 있다. 발생 시점에서 처리하는 것이 아닌, .. Book/스프링부트 핵심가이드 2023. 11. 24. @Validated, 커스텀 어노테이션을 이용한 유효성 검사 유효성 검사 활용 스프링부트에서 유효성 검사를 하기 위해 사용하는 Validation 어노테이션을 이용하는 방법에 대해 알아보겠습니다. @Validated 활용 @Valid : 유효성 검사를 수행하는 어노테이션 @Validated 별도의 어노테이션으로 유효성 검사를 지원하는데, @Valid 어노테이션의 기능을 포함한다. 그룹으로 묶어 대상을 특정할 수 있는 기능이 있다. [예시] DTO 객체에 그룹 설정 @Data @ToString @Builder @NoArgsConstructor @AllArgsConstructor public class ValidatedRequestDto { //.. 중략 @Min(value = 20, groups = ValidationGroup1.class) @Max(value = .. Book/스프링부트 핵심가이드 2023. 11. 23. [Intellj] Intellj에서 삭제파일 및 코드 복구 방법 인텔리제이(Intellj)에서 파일 복구 인텔리제이(Intellj)에서 코드 작성 시에 임의의 에러 및 사용자의 잘못으로 파일이 없어졌을 때 복구하는 방법에 대해 알아보겠습니다. 상황 설명 인텔리제이에서 사용자가 코드 작성 및 Git Push 진행 중에 파일이 날라간 경우 복구 방법 인텔리제이(Intellj) 프로젝트 -> 로컬 기록(Local History) -> 기록 표서(Show History) 사용자가 필요한 정보 확인 기존 파일과 수정된 파일 내용 확인 확인 후에 복구 진행 IDE/IntelliJ 2023. 11. 23. 스프링부트를 이용한 유효성 검사(feat. Validation) 유효성 검사 어플리케이션의 비즈니스 로직이 올바르게 동작하려면 데이터를 사전 검증하는 작업이 필요합니다. 이를 '유효성 검사' 또는 '데이터 검증' 이라고 부르는데 이를 알아보겠습니다. 일반적인 어플리케이션 유효성 검사 문제점 계층별로 진행하는 유효성 검사는 검증 로직이 각 클래스별로 분산되어 있어서 관리하기가 어렵다 검증 로직 이외로 중복이 많아 여러 곳에 유사한 기능의 코드가 존재할 수 있다. 검증해야할 값이 많다면 검증하는 코드가 길어져서 코드가 복잡하고 가독성이 떨어진다. 문제 해결 방법 이를 해결하기 위해서 자바에서는 Bean Validation 이라는 데이터 유효성 검사 프레임워크를 제공한다. Bean Validation 어노테이션을 통해 다양한 데이터를 검증하는 기능 유효성 검사를 위한 로직.. Spring/스프링 이론 2023. 11. 22. @NotBlank, @Valid 적용하는 방법 Springboot validation 적용 스프링부트에서 유효성 검사를 위해 사용하는 어노테이션 중 하나인 @NotBlank 이나 @Valid 를 적용하는 방법에 대해 알아보겠습니다. Validation 어노테이션 에러 상황 @NotBlank 사용 하려는 중에 인텔리제이(Intellj)에서 자동 완성이 되지 않고, 심볼을 찾을 수 없는 경우 발생 원인 @NotBlank 등 Validation 어노테이션을 사용하려면 javax.validation.constraints 패키지에 존재한다. 스프링부트 ver 2.2 이하의 프로젝트에는 존재하지만 ver 2.3 이상은 따로 의존성을 추가해야 사용이 가능하다. 해결 조치 해당 프로젝트에 validation 관련 의존성을 추가해준다. 해당 의존성을 추가하면 유효성.. Spring/Issue 2023. 11. 16. 영속성 전이와 고아 객체 영속성 전이와 고아 객체 특정 엔티티의 영속성을 변경하는 '영속성 전이' 와 연관관계가 끊어진 '고아 객체' 에 대해 알아보겠습니다. 영속성 전이 특정 엔티티의 영속성 상태 변경 시에 연관된 엔티티의 상태가 변경되는 것을 의미한다. [예시 : @OneToMany] public @interface OneToMany { Class targetEntity() default void.class; CascadeType[] cascade() default {}; FetchType fetch() default FetchType.LAZY; String mappedBy() default ""; boolean orphanRemoval() default false; } casade() : 해당 어노테이션은 영속성 전이를 설.. Book/스프링부트 핵심가이드 2023. 11. 15. 연관관계 매핑(of. 다대다(N:N) 매핑) 연관관계 매핑 RDBMS를 사용할 때는 테이블 하나만 사용해서 애플리케이션의 모든 기능을 구현하는 것은 어렵다. JPA를 사용하는 애플리케이션에서도 테이블의 연관관계를 엔티티 간의 연관관계로 표현이 가능하다. 그 중에서 다대다(N:N) 매핑 방식에 대해 알아보겠습니다. 연관관계 매핑 종류와 방향 Many To Many : 다대다(N:N) 실무에서는 거의 사용되지 않는 구성이다. 예시) 상품과 생산 업체 : 한 종류의 상품이 여러 생산업체를 통해 생산될 수도 있고, 생산업체 한 곳이 여러 상품을 생산할 수도 있다. 다대다 연관관계에서는 각 엔티티에서 서로를 리스트로 가지는 구조로 만들어진다. '교차 엔티티' 라고 부르는 중간테이블을 생성하여 다대다 관계를 일대다 또는 다대일 관계로 해소시킨다. 다대다 단방.. Book/스프링부트 핵심가이드 2023. 11. 14. 연관관계 매핑(of. 다대일(N:1), 일대다(1:N) 매핑) 연관관계 매핑 RDBMS를 사용할 때는 테이블 하나만 사용해서 애플리케이션의 모든 기능을 구현하는 것은 어렵다. JPA를 사용하는 애플리케이션에서도 테이블의 연관관계를 엔티티 간의 연관관계로 표현이 가능하다. 그 중에서 다대일(N:1) , 일대다(1:N) 매핑 방식에 대해 알아보겠습니다. 연관관계 매핑 종류와 방향 One To Many : 일대다(1:N) Many To One : 다대일(N:1) 상품 테이블 입장에서 볼 경우 다대일 관계 공급 업체 테이블 입장에서 볼 경우 일대다 관계 다대일 단방향 매핑 공급업체 엔티티 클래스 @Entity @Getter @Setter @NoArgsConstructor @ToString(callSuper = true) @EqualsAndHashCode(callSuper .. Book/스프링부트 핵심가이드 2023. 11. 14. 연관관계 매핑 (of. 일대일(1:1) 매핑) 연관관계 매핑 RDBMS를 사용할 때는 테이블 하나만 사용해서 애플리케이션의 모든 기능을 구현하는 것은 어렵다. JPA를 사용하는 애플리케이션에서도 테이블의 연관관곌르 엔티티 간의 연관관계로 표현이 가능하다. 그 중에서 일대일(1:1) 매핑 방식에 대해 알아보겠습니다. 연관관계 매핑 종류와 방향 One To One : 일대일(1:1) 연관관계 이해 [예시] 재고관리시스템 재고로 등록되어 있는 상품 엔티티에는 공급업체의 정보 엔티티가 매핑되어있다. 공급업체 입장에서는 한 가게에 납품하는 상품이 여러 개가 있을 수 있으므로 상품 엔티티와 일대다 관계가 된다. 상품 입장에서 보면 하나의 공급업체에 속하게 되므로 다대일 관계가 된다. 데이터베이스에서 두 테이블의 연관관계를 설정하면 외래키를 통해 서로 조인해서 .. Book/스프링부트 핵심가이드 2023. 11. 14. JPA Auditing 개념과 활용 방법 JPA Auditing Spring Data JPA 에서는 자동으로 엔티티를 생성하거나 변경할 때마다 자동으로 넣어주는 기능을 제공하는 JPA Auditing에 대해 알아보겠습니다. JPA Auditing이란? JPA에서 'Audit'는 '감시하다' 라는 뜻으로, 각 데이터마다 '누가', '언제' 데이터를 생성했고 변경했는지 감시한다는 의미로 사용된다. 엔티티 클래스에 공통적으로 들어가는 필드가 있다. 생성 주체 생성 일자 변경 주체 변경 일자 JPA Auditing 기능 활성화 @EnableJPAAuditing 추가 @SpringBootApplication @EnableJpaAuditing public class AdvancedJpaApplication { public static void main(S.. Book/스프링부트 핵심가이드 2023. 11. 9. @Query 어노테이션 관련 내용 정리 @Query 어노테이션 사용하기 메서드의 이름만으로 쿼리 메서드를 생성할 수 있다. @Query 어노테이션을 사용해 직접 JPQL을 작성할 수 있는데 알아보겠습니다. @Query 어노테이션 JPQL을 사용하면 JPA 구현체에서 자동으로 쿼리 문장을 해석하고 실행하게 된다. 만약 데이터베이스를 다른 데이터베이스로 변경할 일이 없다면 직접 해당 데이터베이스에 특화된 SQL을 작성할 수 있다. 주로 튜닝된 쿼리를 사용하고자 할 때에 직접 SQL을 작성한다. @Query 어노테이션을 사용하는 메서드 @Repository public interface ProductRepository extends JpaRepository { @Query(" select p from Product as p where p.name .. Book/스프링부트 핵심가이드 2023. 11. 9. 이전 1 ··· 4 5 6 7 8 9 10 ··· 25 다음