백엔드 기초 2일차

오정빈·2025년 10월 16일

내일배움캠프

목록 보기
18/22

백엔드 기초 지식 공부

2025.10.16

ORM이란

ORM(Object-Relational Mapping)
: 객체지향 프로그래밍 언어의 객체와 관계형 데이터베이스의 테이블을
자동으로 매핑해주는 기술.

주요 특징 - 객체와 테이블 간의 데이터 변환 자동화 - SQL을 직접
작성하지 않아도 CRUD 가능 - 패러다임 불일치 문제를 해결함

패러다임 불일치란 데이터베이스는 한 칸에 String, Integer 같은
단일 값만 넣을 수 있지만,
자바 객체는 List, Object 등을 포함할 수 있는 구조적 차이를 말한다.


JDBC란

JDBC(Java Database Connectivity)
자바 프로그램에서 데이터베이스에 접속하고 SQL문을 실행하기 위한 API.
직접 SQL을 작성하고 결과를 처리해야 하므로 코드가 복잡하고 유지보수가
어려움.


JPA란

JPA(Java Persistence API)
Java와 관계형 데이터베이스 간의 패러다임 불일치 문제를 해결하여
데이터베이스 작업을 객체지향적으로 수행할 수 있도록 지원하는 ORM 기술의
표준 인터페이스.

  • JPA는 인터페이스 이므로 단독 사용 불가.
  • 구현체로 대표적으로 Hibernate를 사용.
  • Hibernate는 내부적으로 JDBC를 이용해 DB와 통신.

JPA 계층 구조


Spring Data JPA

Spring에서 JPA를 쉽게 사용할 수 있도록 제공하는 추상화된 모듈.

  • Repository 인터페이스만 정의하면 CRUD 기능 자동 제공.
  • 복잡한 EntityManager 사용 없이 간단하게 데이터 처리 가능.

Entity란

Entity는 데이터베이스 테이블과 1:1로 매핑되는 Java 클래스.

관련 어노테이션

  • @Entity
    → 해당 클래스가 JPA 엔티티임을 선언
    (즉, 데이터베이스 테이블과 매핑되는 클래스임을 나타냄.)

  • @Table(name = "members")
    → 엔티티와 매핑할 데이터베이스 테이블 이름을 지정한다.
    (지정하지 않으면 클래스 이름이 테이블 이름으로 사용됨.)

  • @Id
    → 기본 키(Primary Key)를 지정한다.
    (각 엔티티는 반드시 하나의 @Id 필드를 가져야 한다.)

  • @GeneratedValue
    → 기본 키 자동 생성 전략을 지정한다.
    (예: MySQL에서는 GenerationType.IDENTITY 사용)

  • @Column
    → 엔티티 필드와 데이터베이스 컬럼의 매핑 정보를 지정한다.
    속성 예시:

    • name : 컬럼명 지정
    • length : 문자열 길이 제한
    • nullable : null 허용 여부
    • unique : 유니크 제약 조건 설정

@NoArgsConstructor(access = AccessLevel.PROTECTED)
Lombok 어노테이션으로 기본 생성자를 protected로 생성하여 외부에서 임의로
객체 생성을 제한.


Spring Layer Architecture

Spring 애플리케이션의 3계층 구조

Controller Layer

  • HTTP 요청을 받고 응답을 반환하는 역할
  • 요청 파라미터 검증, 예외 처리 담당

해야 할 일 - @RestController 또는 @Controller 사용 - 요청 매핑
(@GetMapping, @PostMapping 등) - 요청 데이터 DTO로 받기 - 응답 데이터
반환 (JSON)


Service Layer

  • 비즈니스 로직 처리 계층
  • 핵심 로직, 트랜잭션, 데이터 검증 수행

해야 할 일 - @Service 사용 - 여러 Repository 호출 및 조합 - 비즈니스
규칙, 데이터 검증 - 트랜잭션 경계 설정 (@Transactional)


Repository Layer

  • 데이터베이스와 직접 상호작용
  • Spring Data JPA의 JpaRepository를 상속받아 CRUD 자동화

해야 할 일 - CRUD 메서드 정의 또는 쿼리 메서드 작성 - 쿼리 최적화 및
데이터 매핑


계층 간 통신 규칙


✅ 허용

  • 상위 → 하위 계층 호출

  • 동일 계층 내 통신

    ❌ 금지

  • 하위 → 상위 계층 호출

  • 계층 건너뛰기 (Controller → Repository 직접 접근 금지)


DTO란 (Data Transfer Object)

데이터를 계층 간 전달하기 위한 순수한 데이터 객체.

역할 - Controller에서 클라이언트의 요청(JSON 등)을 DTO로 변환 - DTO
→ Entity 변환 후 DB 저장 - Entity → DTO 변환 후 응답 반환

예시

public class MemberDTO {
    private String name;
    private String email;
}

0개의 댓글