풀스택 백엔드 2026.07.20

syyu21b·2026년 7월 20일

풀스택 - 백엔드

목록 보기
46/49
post-thumbnail

[능력 단위 평가]

  • 요구사항

  1. MyBatis를 이용한 Mapper를 생성할 것
  2. 간단한 CRUD는 JPA Repository로 구현할 것
  3. 테이블에 대한 생성(CREATE), 수정(ALTER), 삭제(DROP) DDL 명령문이 Mapper에 반영되어 있을 것
  4. 생성된 테이블의 인덱스와 뷰 목록을 확인하는 데이터사전 조회 명령문을 작성하시오.

프로젝트 소개

이번 능력단위평가에서는 Spring Boot 기반 게시판 프로젝트를 구현하면서 MyBatis와 JPA를 함께 사용하는 방식을 적용하였다.

평가 요구사항에 맞추어

  • MyBatis Mapper 작성
  • JPA Repository를 이용한 CRUD
  • DDL(Create, Alter, Drop)
  • 데이터사전(Data Dictionary) 조회

까지 모두 구현하였다.


요구사항 1. MyBatis를 이용한 Mapper 생성

게시판 프로젝트에서는 복잡한 SQL이나 직접 SQL을 제어해야 하는 기능은 MyBatis Mapper를 이용하여 구현하였다.

Mapper XML을 활용하여 SQL을 분리함으로써

  • SQL 관리가 쉬워지고
  • 유지보수가 편리하며
  • 동적 SQL 작성이 가능하도록 구성하였다.

구현 내용

  • Mapper Interface 작성
  • Mapper XML 생성
  • SELECT
  • INSERT
  • UPDATE
  • DELETE

등을 MyBatis에서 처리하도록 구현하였다.

사용 목적

  • SQL을 직접 제어
  • 복잡한 조회 처리
  • 동적 조건 검색

요구사항 2. 간단한 CRUD는 JPA Repository 사용

단순 CRUD 기능은 Spring Data JPA Repository를 활용하였다.

JPA Repository를 이용하면 별도의 SQL을 작성하지 않아도 기본적인 CRUD 기능을 사용할 수 있다.

구현 내용

Repository 인터페이스를 생성하여

  • save()
  • findById()
  • findAll()
  • delete()
  • existsById()

등의 기본 기능을 활용하였다.

장점

  • 코드량 감소
  • 생산성 향상
  • 객체 중심 개발 가능
  • SQL 작성 없이 CRUD 처리 가능

요구사항 3. DDL(Create / Alter / Drop) 작성

평가 요구사항에 따라 테이블 생성 및 수정, 삭제를 위한 DDL도 함께 작성하였다.

CREATE TABLE

프로젝트에서 사용하는 테이블을 생성하였다.

예시

  • 회원(Member)
  • 게시글(Board)
  • 댓글(Comment)

등의 테이블을 생성하였다.

포함 내용

  • Primary Key
  • Foreign Key
  • NOT NULL
  • DEFAULT
  • AUTO_INCREMENT(IDENTITY)

등을 적용하였다.


ALTER TABLE

테이블 생성 이후

필드 추가 및 수정,

제약조건 변경 등을 수행할 수 있도록 ALTER 명령문을 작성하였다.

예시

  • 컬럼 추가
  • 컬럼 수정
  • 제약조건 변경

DROP TABLE

프로젝트 초기화 및 테스트를 위해

테이블 삭제 명령문도 작성하였다.

예시

DROP TABLE board;
DROP TABLE member;
DROP TABLE comment;

요구사항 4. 데이터사전(Data Dictionary) 조회

테이블 생성 이후 데이터사전을 조회하여

프로젝트에 생성된

  • 인덱스(Index)
  • View

정보를 확인하였다.

MySQL에서는 INFORMATION_SCHEMA를 활용하여 조회하였다.

생성된 인덱스 조회

SELECT *
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE();

또는

SHOW INDEX FROM board;

생성된 View 조회

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_SCHEMA = DATABASE();

또는

SHOW FULL TABLES
WHERE TABLE_TYPE = 'VIEW';

프로젝트 구조

Controller

↓

Service

↓

Repository (JPA)

↓

Mapper (MyBatis)

↓

Database

JPA는 기본 CRUD를 담당하고,

MyBatis는 SQL 제어가 필요한 기능을 담당하도록 역할을 분리하였다.


이번 능력단위평가에서 배운 점

이번 평가를 통해

✔ MyBatis Mapper 작성 방법

✔ Spring Data JPA Repository 활용

✔ SQL과 ORM의 차이점

✔ DDL(Create, Alter, Drop) 작성 방법

✔ 데이터사전(Data Dictionary) 조회 방법

✔ Spring Boot에서 MyBatis와 JPA를 함께 사용하는 구조

를 직접 실습하며 이해할 수 있었다.

특히 JPA는 단순 CRUD를 빠르게 구현할 수 있었고, MyBatis는 SQL을 세밀하게 제어할 수 있어 두 기술을 상황에 맞게 함께 사용하는 방법을 익힐 수 있었다.


마무리

이번 능력단위평가는 단순한 게시판 구현을 넘어 MyBatis와 JPA를 함께 활용하는 실무적인 개발 방식을 경험할 수 있었던 평가였다.

또한 데이터베이스의 생성(Create), 수정(Alter), 삭제(Drop)뿐 아니라 데이터사전(Data Dictionary)를 활용한 인덱스 및 View 조회까지 수행하면서 데이터베이스 구조를 관리하는 방법도 함께 학습할 수 있었다.

이번 프로젝트를 통해 Spring Boot 기반의 게시판 구조와 ORM(JPA), SQL Mapper(MyBatis)의 역할을 이해할 수 있었으며, 앞으로 보다 복잡한 프로젝트에서도 상황에 맞는 데이터 접근 방식을 선택하여 활용할 수 있는 기반을 마련할 수 있었다.

0개의 댓글