전체 글

전체 글

    스프링 프로젝트 구조 설계

    보호되어 있는 글입니다.

    [Spring MVC] Spring Data JPA 데이터 액세스 계층 구현

    Spring Data JPA란? Spring Data JDBC와 Spring Data JPA는 Spring Data라는 패밀리 그룹에 포함되어 있다. Spring Data라는 추상화 된 데이터 액세스 접근 방식으로 구성이 되어 있기 때문에 Spring Data JDBC와 Spring Data JPA라는 기술은 사용하는 방식이 거의 유사하다. JPA vs Hibernate ORM vs Spring Data JPA 용어 정리 JPA(Jakarta Persistence API) 엔터프라이즈 Java 애플리케이션에서 관계형 데이터베이스를 사용하기 위해 정해놓은 표준 스펙이다. Hibernate ORM JPA라는 표준 스펙을 구현한 구현체이다. 실제 사용하는 API라고 볼 수 있다. Spring Data JPA ..

    [Spring MVC] JPA Entity 매핑과 연관 관계 매핑

    [Spring MVC] JPA Entity 매핑과 연관 관계 매핑

    Entity 매핑 JPA를 이용해 데이터베이스의 테이블과 상호 작용(데이터 저장, 수정, 조회, 삭제 등)을 하기 위해 데이터베이스의 테이블과 엔티티 클래스 간의 매핑 작업이 필요하다. Entity 매핑 작업을 크게 나누어 본 경우 Entity 클래스와 데이터베이스 테이블 간의 매핑 기본키 매핑 Entity 필드(멤버 변수)와 데이터베이스 테이블 컬럼 간의 매핑 Entity 간의 연관 관계 매핑 Entity 클래스와 데이터베이스 테이블 간의 매핑 @Entity(name = "USERS") @Table(name = "USERS") public class Member { @Id private Long memberId; } @Entity 해당 애너테이션을 클래스 레벨에 붙이면 JPA 관리 대상 엔티티가 된다...

    [Spring MVC] JPA(Java Persistence API) 개요

    JPA란? Java 진영에서 사용하는 ORM(Object-Relational Mapping) 기술의 Spec이다. 다시 말해, Java의 인터페이스로 사양이 정의되어 있기 때문에 JPA라는 표준 사양을 구현한 구현체는 따로 있다는 것을 의미한다. ORM(Object-Relational Mapping) 객체와 데이터베이스 테이블의 매핑을 통해 엔티티 클래스 객체 안에 포함된 정보를 테이블에 저장하는 기술 Hibernate ORM JPA 표준 사양을 구현한 구현체로는 Hibernate ORM, EclipseLink, DataNucleus 등이 있다. 앞으로 다룰 Hibernate ORM은 JPA에서 정의해둔 인터페이스를 구현한 구현체로써 JPA 지원 기능 이외에 Hibernate 자체 API 역시 지원하고 ..

    [Spring MVC] JDBC 기반 DB 계층

    [Spring MVC] JDBC 기반 DB 계층

    JDBC(Java Database Connectivity)란? Java 코드 레벨에서 사용하는 데이터를 데이터베이스에 저장 및 업데이트 하거나, 반대로 데이터베이스에 저장된 데이터를 Java 코드 레벨에서 사용할 수 있도록 해주는 Java에서 제공하는 spec이다. 개발자는 Java 애플리케이션에서 데이터베이스에 액세스하기 위해 JDBC API를 사용하여 다양한 데이터베이스(Oracle, MySQL 등..)와 연동할 수 있다. Spring에서는 Spring Data JDBC, JPA 같은 기술을 제공하기 때문에 JDBC API를 직접 사용하는 것보다 더 편리하게 데이터 엑세스 로직을 구현할 수 있다. JDBC의 동작 흐름 JDBC는 Java 애플리케이션 내에서 JDBC API를 사용하여 데이터베이스에 액..

    [Spring MVC] 예외(Exception) 던지기(throw)

    체크 예외(Checked Exception)와 언체크 예외(Unchecked Exception) 애플리케이션에서 발생하는 예외(Exception)는 크게 체크 예외(Checked Exception)와 언체크 예외(Unchecked Exception)로 구분할 수 있다. 체크 예외는 발생한 예외를 잡아서(catch) 체크(cheak)한 후에 해당 예외에 대한 구체적인 처리를 하는 예외이다. 대표적인 체크 예외로는 ClassNotFoundException 언체크 예외는 발생한 예외를 잡은(catch) 후에 해당 예외에 대한 어떤 처리를 할 필요가 없는 예외이다. 대표적인 언체크 예외로는 NullPointerException, ArrayIndexOutOfBoundsException RuntimeExceptio..

    [Spring MVC] 예외 처리(@ExceptionHandler, @RestControllerAdvice)

    애플리케이션에서 만날 수 있는 예외는 다음과 같다. 클라이언트 요청 데이터에 대한 유효성 검증(Vaildation)에서 발생하는 예외 서비스 계층의 비즈니스 로직에서 던져지는 의도된 예외 웹 애플리케이션 실행 중에 발생하는 예외(RuntiomException) 애플리케이션에 문제가 발생하거나, 유효성 검증에 실패할 경우 예외(throw) 처리를 유도할 수 있다. @ExceptionHandler 예외 발생 시 Response Body에 에러메세지가 클라이언트에게 전송되지만, 어떤 예외가 발생한지 알 수 없다. @ExceptionHandler를 메서드에 추가하면 클라이언트에게 더 상세한 에러메세지를 전달할 수 있다. @ExceptionHandler // MethodArgumentNotValidExceptio..

    [Spring MVC]Service 계층 DI 연동, Mapper 사용 Entity 매핑

    Service 계층이란? 서버의 구조는 API 계층, Service 계층, Data Access 계층으로 3 계층으로 이루어져 있고, 각 계층간에 데이터 전달이 필요하다. 이 중에서 Service 계층은 API 계층에서 전달 받은 요청 데이터를 기반으로 실질적인 비즈니스 요구사항을 처리하는 계층이다. API 계층과 Service 계층의 연동? API 계층과 Service 계층을 연동한다는 의미는, API 계층의 Controller 클래스와 서비스 계층의 Service 클래스가 메서드 호출을 통해 상호 작용한다는 것을 의미한다. DI를 통한 Service 계층과 API 계층 연동 && Mapper를 이용한 DTO 클래스와 Entity 클래스 매핑 Spring DI(Dependency Injection)..