Spring46 [JPA] JPA(Java Persistence API)란? JPA란? (Java Persistence API, Jakarta Persistence) : Java 진영에서 사용하는 ORM(객체 중심 매핑, Object-Relational Mapping) 기술의 표준 사양(명세) 표준 사양, 명세? - Java의 인터페이스로 사양이 정의되어 있다! So, JPA를 구현한 구현체를 사용하고, 학습한다! Hibernate ORM : JPA 표준사양을 구현한 구현체 중 하나! (+ EclipseLink, DataNucleus...) JPA 지원 기능 이외에 Hibernate 자체 API 또한 지원한다. 데이터 액세스 계층에서의 JPA 위치 JPA - 데이터 액세스 계층 상단 Hibernate ORM - 데이터 저장, 조회 등의 작업 JDBC API를 이용해서 데이터베이스.. 2022. 11. 1. [Spring] Spring Data JDBC 적용하기 (+ H2 DB 사용하기) Spring Data JDBC 적용 순서 1. build.gradle에 의존 라이브러리 추가 2. application.yml 파일 설정 3. 'schema.sql' 파일에 테이블 스크립트 작성 4. 3에서 작성한 파일 읽어오도록 application.yml 에 초기화 설정 추가 5. db 테이블과 매핑할 엔티티(Entity) 클래스 작성 6. 5기반으로 db 작업을 처리할 Repository 인터페이스 작성 7. 6에서 작성된 Repository 인터페이스를 서비스 클래스에 사용하도록 DI 8. DI된 Repository의 메서드 사용, 서비스 클래스에서 CRUD 작업 수행 ✍🏻세부 과정 build.gradle에 사용할 데이터베이스를 위한 의존 라이브러리를 추가합니다. dependencies { ..... 2022. 10. 29. [Spring] 데이터 액세스 기술 유형(SQL 중심 / 객체 중심(ORM)) + Spring Data JDBC란? JDBC란? JDBC : Jaba Database Connectivity = 데이터를 db에 저장, 업데이트 하거나 db에 저장된 데이터를 Java 코드 레벨에서 사용할 수 있게 해주는 표준 API JDBC API를 사용하면 개발자는 다양한 벤더 (Oracle, MySQL, MS SQL) 데이터베이스와 연동할 수 있다. Java에서 제공되며, 데이터 액세스 기술의 기본이 되는 저수준 API지만, 구체적 사용법은 배우지 않아도 된다. (지금 내 단계 한정) JDBC를 직접적으로 사용하기 보다는 JDBC를 내부적으로 이용하는 Spring Data JDBC나 Spring Data JPA 로 더 편하게 데이터 액세스 로직 구현할 수 있기 때문! 대신 JDBC 동작 흐름 정도는 알아둬야 한다. JDBC API의 .. 2022. 10. 27. [Spring] 서비스 계층 예외 던지기(throw) 및 예외 처리 (+ Custom Exception 생성) 체크 예외와 언체크 예외? (Checked Exception vs Unchecked Exception) : 애플리케이션에서 발생하는 예외는 크게 둘로 나뉜다. 체크 예외 : 발생한 예외를 잡아서(catch) 체크한 후 구체적인 처리가 요구되는 예외 (예외 복구, 회피 등) ex) ClassNotFoundException 언체크 예외 : 예외를 잡아서 해당 예외에 대한 처리가 필요 없는 예외 ex) NullPointerException, ArrayIndexOutOfBoundsException ⬇ *주로 개발자의 코드 작성 오류로 발생되는데, 모두 RuntimeException을 상속한 예외들이다. (Java, Spring 지원) 이 RuntimeException은 너무 방대하므로 때때로 개발자가 직접 예외.. 2022. 10. 26. [Spring] 스프링 예외처리 (@ExceptionHandler, @RestControllerAdvice) 지금까지 작성한 샘플 프로젝트 코드들에 예외 처리를 적용해본다. 예외를 처리하는 적절한 방법과, 해당 예외에 대한 적절한 메세지를 클라이언트 쪽에 어떻게 알려줄 수 있는지 배우게 되었다. 올바른 방식(코드 중복X, 역할 분리O)으로 코드가 수정된 흐름에 따라 정리하고, 최종적으로는 사용된 어노테이션과 역할별 작성된 클래스들에 대해서도 정리했다. 예외를 처리해주는 이유? 예외를 처리해주지 않은 코드의 경우, 클라이언트 측에서 Response Body 내용만으로는 어떤 항목이 유효성 검증에 실패한 것인지 알 수가 없다. 유효성 검증 뿐만 아니라 어플리케이션의 규모가 커지면 커질 수록 비즈니스 로직에서 던져지는 의도된 예외, 웹 애플리케이션 실행중 발생하는 RuntimeException 예외 등 너~무나도 다.. 2022. 10. 25. [Spring] 서비스 계층 (Service Layer) @Service, @Mapper 서비스 계층 ? : API 계층(Web Layer)에서 전달 받은 클라이언트의 요청 데이터를 기반으로 실질적인 비즈니스 요구사항을 처리하는 핵심 계층 DI를 통한 서비스 계층 ↔ API 계층 연동 API 계층과 서비스 계층을 연동한다? = API 계층에서 구현한 Controller 클래스가, 서비스 계층의 Service 클래스와 메서드 호출을 통해 상호 작용한다는 것! ➡ 컨트롤러에서 작성해주었던 핸들러 메서드로 전달받은 요청을 처리하는 메서드를 서비스 클래스에 작성한다. Controller 클래스 / Service 클래스 / Entity 클래스의 각 목적과 역할 잘 생각해보기! 오늘 제작했던 코드 기반으로 살펴보자면, (순서는 코드 작성했던 순) 1. MemberController : 클라이언트의 요청.. 2022. 10. 24. [Spring] DTO 란? (Data Transfer Object) DTO란? (Data Transfer Object) : 엔터프라이즈 애플리케이션 아키텍처 패턴 중 하나 by 마틴 파울러 : 데이터를 전송(transfer)하기 위한 용도의 객체 클라이언트 ➡ 서버 쪽으로 전송하는 요청 데이터 서버 ➡ 클라이언트 쪽으로 전송하는 응답 데이터 = 클라이언트 ↔ 서버 간 데이터 전송이 이루어질 때 사용됨 DTO가 필요한 이유 1. 코드의 간결성 컨트롤러에서 @RequestParam을 이용할 경우 가져올 객체 하나하나를 모두 작성해줘야 한다! ➡ 이 데이터들을 하나의 객체로 모두 전달 받을 수 있다면..? 코드 간결! = 요청 데이터를 하나의 객체로 전달 받는다. (데이터들을 Map에 담지 않아도 되고, memberDto 객체를 ResponseEntity 클래스의 생성자 파라.. 2022. 10. 21. [Spring] Controller 구조 및 핸들러 메서드(Handler Method) API 계층 = 클라이언트의 요청을 직접적으로 전달 받는 계층 Controller = 클라이언트 요청의 최종 목적지(엔드포인트) 애플리케이션 엔트리포인트 = main() 메서드가 포함된, 애플리케이션의 시작점 @SpringBootApplication : 스프링 부트 애플리케이션 엔트리포인트 어노테이션 1. 자동 구성을 활성화 2. 애플리케이션 패키지 내에서 자동으로 @Component 를 스캔해주고, Spring Bean 으로 등록 3. @Configuration 클래스 찾아주고, 추가적으로 Spring Bean 등록 * @Component vs @Configuration 1) @Component - 개발자가 직접 작성한 클래스 직접 bean 으로 등록 2) @Configuration + @Bean - .. 2022. 10. 21. [Spring] Spring MVC란? Spring Framework - Spring에서 지원하는 모든 기능들 Spring-webmvc : Spring의 여러 웹 계층 처리 모듈 중 하나 = 클라이언트의 요청 처리 모듈, 서블릿(Servlet Api) 기반 * 서블릿? : 클라이언트의 요청 처리하도록 특정 규약에 맞추어서 Java 코드로 작성하는 클래스 파일 *서블릿 컨테이너? : 서블릿들이 웹 애플리케이션으로 실행이 되도록 함 (ex. 톰캣) Spring MVC Model = 클라이언트에게 응답으로 돌려주는 작업의 처리 결과 데이터 View = Model 데이터를 이용해서 클라이언트 애플리케이션 화면(ex.웹 브라우저)에 보여지는 리소스 제공 내가 앞으로 배울 View 형태 - Model 데이터를 JSON 프로토콜 데이터로 변환하는 것 * .. 2022. 10. 21. [Spring] AOP가 필요한 이유, AOP 용어 / Advice, Pointcut, JointPoint [Spring] AOP란? (Aspect Oriented Programming) AOP (Aspect Oriented Programming)란? = 관심(Aspect) 지향 프로그래밍 AOP에서 말하는 관심 = 애플리케이션에 필요한 기능 중 공통적으로 적용되는 기능에 대한 관심 공통 관심 사항 & 핵심 관심 사항? 공통 wlikeoxy.tistory.com 에 대한 추가 공부 관점 지향 프로그래밍 = AOP(Aspect Oriented Programming) : Aspect를 사용하여 다양한 기능들을 분리한다. (* Aspect? : 하나의 모듈! = 부가 기능, 해당 부가 기능을 어디에 적용할 지 정의한 것) Aspect = Advice + PointCut OOP와 대척되는 개념이 아님! 오히려 OOP.. 2022. 10. 18. 이전 1 2 3 4 5 다음