용어 정리
- DBMS : 다수의 사용자가 DB에 접근 할 수 있도록 해주는 소프트웨어 도구
- MySQL, ORACLE, Postgres, NoSQL - JDBC : JAVA에서 DB에 접속하기 위한 DBMS 인터페이스
- ORM(Object Relational Mapping) : 객체 지향 프로그래밍의 객체(클래스)와 관계형 데이터베이스의 데이터(테이블)를 자동으로 매핑 Java에서는 Hibernate, JPA가 있다.
※ DB와 매핑된 Entity에 접근하므로 테이블 정규화가 잘 되어 있어야 한다 - JPA : 자바 ORM 기술에 대한 명세
( 특정 기능을 하는 라이브러리가 아닌, ORM을 어떻게 사용해야 하는지 정의하는 한 방법) - Hibernate : JPA를 구현한 대표적인 프레임워크
기본적으로 Spring Data JPA는 디폴트로 Hibernate를 JPA 구현체로 사용한다.
- JPA는 기술 스택이고, Hibernate는 이를 구현한 소프트웨어, JPA Provider 역할을 한다.
Spring-JPA API
- JPA를 편리하게 이용하기 위해 Spring 에서 JPA를 래핑한 모듈
- JPA를 사용할 때 필수적으로 생성해야하나, 예상가능 하고 반복적인 코드들을 대신 작성해주는 역할
이를 이용하면 DB의 테이블과 동기화될 수 있는 인스턴스를 생성하고, 직접 DB에 접근하지 않고 매핑된 Object(Entity)에 접근하여 DB의 값을 조회하거나 변경한다
ORM 방식 vs JDBC 방식
Hibernate(ORM 방식) | Spring Data JPA + Hibernate로 동작 |
MyBatis(JDBC 방식) | Spring Boot에서 공식적으 지원. Spring Data JPA 없이, 직접 MyBatis를 활용 "Spring Boot provides a starter for MyBatis that makes it easy to configure and use MyBatis with Spring Boot." |
JPA
구체적인 ORM를 매핑한 것, orm을 래핑한 스프링에서 제공하는 추가 library ( ORM 프레임 워크가 아니라 ORM을 래핑한 라이브러리
- Entity가 바뀌면 orm 프레임 워크에서 자동으로 쿼리를 수정시킨다,
만약 DB에 없는 테이블을 Entity에서 생성하면 DB에 해당 테이블이 생성된다.(DDL) - HSQL : orm 와 entity로만으로는 제공이 안되는 복잡한 쿼리에 사용(조인, 통계 등등)
customizing된 자기만의 쿼리를 제공한다
※ 커스텀 구현체 생성
- naming pattern 이 있으므로 주의
: 같은 패키지 내 생성
: (예전방식) 구현체는 Repository이름+Impl(implementation을 접미사로 하는 등 Single Custom 방식을 사용
: (현재) 인테페이스를 쪼개어 세그멘트 방식 사용
※ 네이밍 패턴 부분은 후속적으로 봐야할 필요 있을 듯
class CustomizedUserRepositoryImpl implements CustomizedUserRepository {
@Override
public void someCustomMethod(User user) {
// Your custom implementation
}
}
각 메서드 기능은 레퍼런스 참고
https://docs.spring.io/spring-data/jpa/reference/jpa/specifications.html#page-title (Specifications)
https://docs.spring.io/spring-data/jpa/reference/repositories/custom-implementations.html#page-title (커스텀 구현체)
DTO · VO · ENTITY
- DTO : 레이어간 데이터 타입을 이동하기 위해서 사용
- VO : 출력하기 위해서 만드는 객체 ( "출력"하는 값이므로 불변 )
- ENTITY : DB와 완벽하게 일치
( "DB"의 컬럼과 완벽하게 필드가 일치하며, Entity가 바뀐다는 건 DB의 데이터가 바뀌는 것과 같다
★ Entity ↔ DTO 관련하여 정리중인 포스팅
: https://silver-w.tistory.com/103
출처 : https://doing7.tistory.com/105
[Spring] Spring Data JPA 이해하기 (feat ORM, JPA)
🌱 ORM 이란? ORM 이란 Object-Relational Mapping 의 약자로, 이름 그대로 객체(Object)와 관계형 데이터(Relational data) 를 매핑하기 위한 기술이다. 이러한 매핑이 필요한 이유는 객체 지향 언어과 관계형 데
doing7.tistory.com
'SPRING' 카테고리의 다른 글
[Spring Sequrity] 구동원리과 간략한 구현 (0) | 2025.02.12 |
---|---|
AOP (작성중) (0) | 2025.01.31 |
Entity·DTO·VO와 사용범위, 변환방법 (0) | 2025.01.11 |
스프링 컨테이너와 싱글톤 컨테이너 (0) | 2024.12.29 |
Spring Bean과 빈 조회하기 (0) | 2024.12.25 |