부트캠프 기록/Section3

[Spring MVC] JBDC 기반 데이터 엑세스 계층

bbangduck 2022. 10. 30. 15:54

✅ 학습 목표

  • JDBC가 무엇인지 이해할 수 있다.
  • Java에서 JDBC가 어떤 역할을 하는지 이해할 수 있다.
  • Spring Data JDBC가 무엇인지 이해할 수 있다.
  • Spring Data JDBC를 이용해서 데이터의 저장, 수정, 조회, 삭제 작업을 할 수 있다.
  • Spring Data JDBC 기반의 엔티티 연관 관계를 매핑할 수 있다

JDBC 동작흐름

JDBC 정의

JDBC(Java Database Connectivity)는 Java 기반 애플리케이션의 코드 레벨에서 사용하는 데이터를 데이터베이스에 저장 및 업데이트 하거나 반대로 데이터베이스에 저장된 데이터를 Java 코드 레벨에서 사용할 수 있도록 해주는 Java에서 제공하는 표준 사양(또는 명세, Specification)

 

 

 

JDBC API 사용 흐름

 

Spring Data JDBC란?

SQL 중심 기술

객체 중심 기술(ORM, Object-Relational Mapping) 

애플리케이션의 규모가 상대적으로 크지 않고, 복잡하지 않을 경우에 사용

 

 

Spring Data JDBC 적용 순서

  1. build.gradle에 사용할 데이터베이스를 위한 의존 라이브러리를 추가
  2. application.yml 파일에 사용할 데이터베이스에 대한 설정
  3. ‘schema.sql’ 파일에 필요한 테이블 스크립트를 작성
  4. application.yml 파일에서 ‘schema.sql’ 파일을 읽어서 테이블을 생성할 수 있도록 초기화 설정을 추가
  5. 데이터베이스의 테이블과 매핑할 엔티티(Entity) 클래스를 작성
  6. 작성한 엔티티 클래스를 기반으로 데이터베이스의 작업을 처리할 Repository 인터페이스를 작성
  7. 작성된 Repository 인터페이스를 서비스 클래스에서 사용할 수 있도록 DI 
  8. DI 된 Repository의 메서드를 사용해서 서비스 클래스에서 데이터베이스에 CRUD 작업을 수행

 

 

Spring Data JDBC 기반의 도메인 엔티티 및 테이블 설계

DDD(Domain Driven Design, 도메인 주도 설계) 

도메인 정의

애플리케이션 개발에서 사용되는 도메인이란 주로 비즈니스적인 어떤 업무 영역과 관련

비즈니스 업무 영역을 의미하는 도메인 지식들을 서비스 계층에서 비즈니스 로직으로 구현해야 함

애그리거트(Aggregate)와 애그리거트 루트(Aggregate Root)는 DDD에서 사용되는 언어

애그리거트: 비슷한 업무 도메인들의 묶음

애그리거트 루트: 애그리거트 내의 대표 도메인

애그러거트 루트 선정 기준: 각 애그리거트 내의 도메인들 중에서 다른 모든 도메인들과 직간접적으로 연관이 되어 이쓴ㄴ 도메인

데이터베이스 테이블 간의 관계는 외래키를 통해 맺어지지만 클래스끼리 관계는 객체의 참조를 통해 관계가 맺어짐