Spring MVC [JDBC]

손정훈·2023년 2월 20일
0

Spring MVC

목록 보기
4/5

JDBC

데이터베이스에 저장 및 업데이트 하거나 반대로 데이터베이스에 저장된 데이터를 Java 코드 레벨에서 사용할 수 있도록 해주는 Java에서 제공하는 표준 API

JDBC API 사용 흐름


ORM (Object-Relational Mapping)

SQL 쿼리문을 직접적으로 작성하기 보다는 데이터베이스의 Java 객체를 이용해 애플리케이션 내부에서 이 Java 객체를 SQL 쿼리문으로 자동 변환 한 후에 데이터베이스의 테이블에 접근

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 작업을 수행

애그리거트 (Aggregate)

같이 비슷한 업무 도메인들의 묶음

애그리거트 루트 (Aggregate Root)

하나의 애그리거트를 대표하는 도메인

데이터베이스의 테이블 간 관계로 보자면, 애그리거트 루트는 부모 테이블이 되고, 애그리거트 루트가 아닌 다른 도메인들은 자식 테이블이 됨


애그리거트 객체 매핑 규칙

  • 모든 엔티티 객체의 상태는 애그리거트 루트를 통해서만 변경할 수 있다.
  • 하나의 동일한 애그리거트 내에서의 엔티티 객체 참조
    ▶ 동일한 하나의 애그리거트 내에서는 엔티티 간에 객체로 참조한다.
  • 애그리거트 루트 대 애그리거트 루트 간의 엔티티 객체 참조
    ▶ 애그리거트 루트 간의 참조는 객체 참조 대신에 ID로 참조한다.
    ▶ 1대1과 1대N 관계일 때는 테이블 간의 외래키 방식과 동일하다.
    ▶ N대N 관계일 때는 외래키 방식인 ID 참조와 객체 참조 방식이 함께 사용된다.
  • AggregateReference 클래스는 테이블의 외래키처럼 다른 객체의 ID 값을 참조할 수 있도록 해준다.

0개의 댓글