데이터베이스 관리 소프트웨어.
관리 특징에 따라 관계형, 객체-관계형, 도큐먼트형, 비관계형 등으로 나뉨.
Relational DBMS. 관계형 모델을 기반으로 한 데이터베이스 관리 소프트웨어.
H2나 MySql 등
H2: spring boot가 지원하는 인메모리 관계형 데이터베이스. 앱 내부에 데이터를 저장해 앱을 다시 실행하면 데이터는 초기화된다. 테스트용으로 많이 사용한다.
Object-relational mapping. 자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법.
객체와 데이터베이스를 연결해 자바 언어로만 데이터베이스를 다룰 수 있게 하는 도구.
여러 종류의 ORM 중 자바에서는 JPA(Java persistence API)를 표준으로 사용함.
JPA
자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스.
자바 객체와 데이터베이스를 연결해 데이터를 관리. 객체 지향 도메인 모델과 데이터베이스의 다리 역할을 함.
하이버네이트
JPA의 실질적인 사용을 위해 필요한 ORM 프레임워크.
JPA 인터페이스를 구현한 구현체이자 자바용 ORM 프레임워크. 내부적으로는 JDBC API를 사용한다.
엔티티
데이터베이스의 테이블과 매핑되는 객체.
자바 객체이지만 데이터베이스의 테이블과 직접 연결된다는 부분에서 일반 객체와 구분됨. 자바 객체이지만 DB에 영향을 미치는 쿼리를 실행하는 객체이다.
엔티티 매니저
영속성 컨텍스트
엔티티를 관리하는 가상공간.
- 분리 상태
- 영속성 컨텍스트가 관리하는 관리상태
- 영속성 컨텍스트와 전혀 관계가 없는 비영속 상태
- 삭제된 상태
스프링 데이터
DB에 대한 특성은 유지하되 데이터 엑세스를 쉽게 하는 스프링 기반 프로그래밍 모델.
DB사용 기능을 클래스 레벨에서 추상화해 비즈니스 로직에 더 집중할 수 있도록 돕는다. - CRUD 포함한 여러 메서드와 자동 생성 쿼리 등을 사용할 수 있는 인터페이스를 이용할 수 있다.
스프링 데이터 JPA
스프링 프레임워크에서 JPA를 쉽게 사용하도록 만들어 둔 모듈
스프링 데이터 + JPA
repository 역할을 하는 인터페이스를 만들어 데이터베이스의 테이블 CRUD 같은 기본 작업을 쉽게 할 수 있다.
JpaRepository 인터페이스를 상속받고 제네릭에는 관리할 <엔티티명, 엔티티 기본키 타입>을 지정하면 기본 메서드 사용 가능.
예제
public interface UserRepository exgtends JpaRepository<User, Long>{ // 이렇게 상속받아 사용 가능하다
}