Spring 23

[Spring] JPA 애너테이션, 관계 매핑

앤티티 클래스에서 @Getter, @Setter, @NoArgsConstructor, @Entity 를 붙여줌. @Entity : 이 객체가 entity 객체라는 것을 알려줘야 함.                기본생성자가 없으면 오류가 발생하므로 @NoArgsConstructor 를 넣어 주어야 함.  @GerneratedValue : 자동으로 기본키가 생성되는 전략임. 기본 설정은 데이터베이스 테일블에 맡김. @Id@GeneratedValue(strategy = GenerationType.IDENTITY)private long coffeeId;- GenerationType 1. Identity: 기본키생성을 데이터베이스에 위임한다. AUTO_INCREMENT 보통 JPA, MYsql 사용시 설정. 2...

[Spring] 이벤트 실행, 비동기 처리

https://shyun00.tistory.com/86 53일차: @Async 비동기처리와 Spring Event (+ Transaction)오늘은 트랜잭션 구현 실습을 진행했다. 사실 스프링에서 트랜잭션은 @Transactional을 사용하면 쉽게 구현할 수 있다. 그래서 실습에서 몇가지 제약 조건을 걸고 트랜잭션을 구현했다. (Case) 회원가shyun00.tistory.com비동기 처리@EnableAsync : 클래스에 비동기 활성화. @Async : 비동기 처리 필요한 메서드에 붙여줌.  Event Object- 이벤트 객체가 생성되는 클래스.  Event Listener- 이벤트가 발행되면 수행될 작업을 구현.    :: EmailSender 클래스를 만들었음. 여기에서 이메일 보내는 역할을 함..

Spring/트랜잭션 2024.06.26

[Spring] JDBC 페이지네이션

☘️  Repository Page findAllByOrderByMemberIdDesc (Pageable pageable);public interface MemberRepository extends PagingAndSortingRepository { Optional findByEmail(String email);}이 방법을 쓸 수도 있지만, PagingAndSortingRepostiry 을 씀으로써findAllByOrderByMemberIdDesc 를 쓰지 않아도 됨.  Spring Data JPA 페이징과 정렬Repository 인터페이스 작성 시 JpaRepository가 아니라 PagingAndSortingRepository를 상속하게 하면, Spring Data JPA에서 제공하는 페이징, ..

[Spring] JDBC, JPA

JDBC - Java DataBase Connectivity JDBC API - DBMS 에 종속되지 않는 관련 API 를 제공.                    - 데이터베이스의 종류에 상관없이 똑같은 코드로 해결하도록 함.                   - 자바에서 데이터 베이스에 접속할 수 있도록 함.                   - JDK 에서 제공- JDBC API 는 설정한 데이터베이스에 맞는 드라이버를 사용하여 데이터베이스에 접근함. - JDBC는 인터페이스이고, 구현한 것은 각 데이터 베이스에 맞는 드라이버들이다. - 그 후에 Connection 객체 생성함. Connection Fool 에 미리 자주 사용하는 자원을 만들어서 초기화, 요청. 등        DDD (Domain D..

[Spring] 예외처리 - 비지니스 로직

개발자가 의도적으로 예외를 던질 수 있는 상황 - 백엔드 서버와 외부 시스템과의 연동에서 발생하는 에러 - 시스템 내부에서 조회하려는 리소스가 없는 경우 💡GlobalExceptionAdvice  @ExceptionHandler @ResponseStatus(HttpStatus.NOT_FOUND) public ErrorResponse handleBusinessLogicException(BusinessLogicException e) { // ErrorResponse 에서 BusinessLogicException를 파라미터로 받았을 때. (1) final ErrorResponse response = ErrorResponse.of(e); // ErrorResp..

Spring/예외처리 2024.06.15

[Spring] DTO

Client    -DTO-    API    -Entity-    Service    -Entity-    Repository    -DB - 계층 간 데이터 교환을 위한 객체. - DTO 와 Entity 의 변환 위치는 Controller layer에서 하는 것이 적당하다. - 로직을 가지고 있지 않은 순수한 데이터 객체. Getter/ Setter 메서드만 갖는다.  Entity - 실제 DB테이블과 1:1 로 매핑되는 클래스.   [Spring] Web Layer(웹 계층) 과 도메인 모델 패턴 - SW Developer1. Web Layer 흔히 사용하는 Controller와 JSP/Freemaker 등의 뷰 템플릿 영역이다. 이외에도 필터(@Filter), 인터셉터, 컨트롤러 어드바이스(@Co..

[Spring] 예외처리 - Spring MVC

bindingResult : 스프링이 제공하는 검증 오류 보관 객체. 검증 오류가 발생하면 BindingResult 객체에 보관.  - @ModelAttribute 바로 옆에 둬야 한다. ObjectError : 글로벌 오류. FieldError : 필드 오류. FieldError(검증 객체 이름, 오류가 발생한 필드 이름, 오류 기본 메시지) - 타입 오류로 바인딩에 실패하면 FieldError 를 생성하며 오류를 넣고, 해당 오류를 BindinResult 에 담아 컨트롤러를 호출.  @RestControllerAdvice  - 여러 개의 Controller 클래스에서 @ExceptionHandler 가 추가된 메서드를 공유해 사용할 수 있다. - 이 에너테이션을 추가한 클래스를 통해 예외 처리를 공통..

Spring/예외처리 2024.06.13

[Spring] 예외처리 - 정적 팩토리 메서드

예외  - checked Error : class 파일로도 안 바뀌고 그 전에 찾아서 멈취버림. 컴파일이 안 됨. 사용자가 처리를 해줘야 함.   - unchecked Error : 사용자가 예외처리 안 해도 컴파일 되는 에러.                                   안해도 컴파일이 됨. 코드가 실행됐을 때 에러 발생. 어떠한 수를 0으로 나눌 때. 에러 : 개발자의 손을 떠나감.   1. 생성자가 오버로딩이 되는데 static으로 안 만들고 생성자로 만들면되지 않느냐 - 생성자는 객체를 만들거라는 의미 밖에 없음. - 생성자로 오버로딩 하면 static 을 못함. 어찌됐든 객체를 만들어야 함.  - 정적 팩토리 메서드(Static Factory Method) Static Metho..

Spring/예외처리 2024.06.13

[Spring] Spring 아키텍쳐, MVC

- Spring MVC 는 레이어드 아키택쳐 중 하나 인 거고.- 이걸 구현한게 Spring 인거라 이름이 그렇게 지어짐 . - Spring Container 인 거임. servlet Container 에 Spring Container 포함.  Controller - Service - Repository 의 구현 관계 . MVC 패턴은 말그대로 디자인 패턴이고 Spring MVC 프레임 워크는 MVC 기반의 개발 공간이라 보면 된다.굳이 표현하자면 스프링 프레임 워크는 MVC 패턴 기반으로 만들어 졌다고 보면 된다. https://sigridjin.medium.com/servletcontainer%EC%99%80-springcontainer%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B..

Spring/API 계층 2024.06.12

[Spring] annotation 1 - API 계층

DTO에 적용된 유효성 검증 @NotBlank - null, 공백, 스페이스 같은 값은 모두 허용되지 않음.         - 비어있는 값을 넣을 때 오류라고 돌려버림.        - patch 로 하나씩 원하는 값을 넣어야 할 때는 알맞지 않음. @Pattern - 정규표현식을 활용해서 유효한 값인지 파악.          - Null 일 경우 그냥 통과. 내부의 정규표현식은 단 하나라도 문자열이 있을 때 검증.          - 빈 문자열도 문자열이라서 검사함.  >> 유효성 검증 애너테이션이 추가된 DTO 클래스에서 유효성 검증 로직이 실행되려면 @Valid 를 붙여야 함. @Valid - 객체의 검증 , 유효성 검사를 다 만들어 놓고 안 붙여 놓으면... 유효성 검증이 안됨. 파라미터 부분에 ..

Spring/API 계층 2024.06.11