✍학습 키워드
ORM이란?
- ORM(object-relational mapping)은 자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법이다.
- 즉, 객체와 데이터베이스를 연결해 자바 언어로만 데이터베이스를 다룰 수 있게 하는 도구
- ORM이 있다면 데이터베이스의 값을 마치 객체처럼 사용할 수 있다.
- 데이터베이스에 대한 종속성이 줄어드나, 복잡하고 무거운 쿼리는 ORM으로 해결하기 불가능한 경우가 있다.
JPA와 하이버네이트
- 자바에서는 JPA를 ORM의 표준으로 사용한다.
- JPA는 자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다.
- 하이버네이트는 JPA 인터페이스를 구현한 구현체이자 자바용 ORM 프레임워크이다.
- 자바 객체를 통해 데이터베이스 종류에 상관없이 데이터베이스를 자유자재로 사용할 수 있게 한다. 내부적은로는 JDBC API를 사용한다.
스프링 데이터와 스프링 데이터 JPA
- 스프링 데이터는 비즈니스 로직에 더 집중할 수 있도록 도와준다.
- 스프링 데이터 JPA는 스프링 데이터의 공통적인 기능에서 JPA의 유용한 기술이 추가된 기술이다. JpaRepository를 통해 더 편리하게 사용하는 메서드를 제공한다.
public interface MemberRepository extends JpaRepository<Member, Long>{
}
⇒ 해당 코드만을 통해 기본 CRUD 메서드를 사용할 수 있다.
📝새로 배운 개념
H2
- 자바로 작성되어 있는 RDBMS
- 스프링 부트가 지원하는 인메모리 관계형 데이터베이스
- 애플리케이션 자체 내부에 데이터를 저장하는 특징을 가지며, 애플리케이션을 다시 실행하면 데이터가 초기화 된다.
- 하지만 간편하게 사용하기 좋아 테스트 용으로 많이 사용된다.
엔티티 매니저란?
⇒ JPA의 중요한 컨셉 중 하나인 엔티티 매니저와 영속성 컨테스트
- 엔티티?
- 데이터베이스의 테이블과 매핑되는 객체 (테이블과 직접 연결되어 엔티티라고 한다.)
- 영속성 컨텍스트가 관리하고 있지 않는 분리 상태, 영속성 컨텍스트가 관리하는 관리 상태, 영속성 컨텍스트와 전혀 관계가 없는 비영속상태, 삭제된상태 의 4가지 상태를 가진다.
- 엔티티 매니저?
- 엔티티를 관리해 데이터베이스와 애플리케이션 사이에서 객체를 생성, 수정, 삭제하는 등의 역할을 한다.
- 엔티티 매니저를 만드는 곳이 엔티티 매니저 팩토리이다.
- JPA에서 엔티티 매니저를 관리하므로 직접 관리할 필요가 없다.
- 엔티티를 관리해 데이터베이스와 애플리케이션 사이에서 객체를 생성, 수정, 삭제하는 등의 역할을 한다.
- 영속성 컨텍스트?
- 엔티티를 관리하는 가상의 공간, 엔티티 매니저는 엔티티를 영속성 컨텍스트에 저장한다.
- 기존에는 데이터 조작을 위해 쿼리를 직접 작성해야 했지만 자바코드를 JPA가 알아서 쿼리로 변경해줌
- 1차 캐시를 가져 식별자를 저장해두고, 디비를 거치지 않고 매우 빠르게 데이터를 조회
- 쿼리를 모았다가 트랜잭션을 커밋하면 모았던 쿼리를 한번에 실행한다.
- 1차 캐시에 저장되어 있는 엔티티의 값과 현재 엔티티의 값을 비교해서 변경사항을 감지해 변경된 값을 디비에 자동으로 반영
- lazy loading을 통해 쿼리로 요청한 데이터를 필요할때 조회함.
- 기존에는 데이터 조작을 위해 쿼리를 직접 작성해야 했지만 자바코드를 JPA가 알아서 쿼리로 변경해줌
- 엔티티를 관리하는 가상의 공간, 엔티티 매니저는 엔티티를 영속성 컨텍스트에 저장한다.
⇒ 이러한 특징등을 가지고 있고, 이로인해 데이터베이스 접근을 최소화해 성능을 높일 수 있다.
728x90
'개발 공부 기록 > 07. TIL' 카테고리의 다른 글
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 TIL - 3장 JPA (0) | 2023.11.03 |
---|---|
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 TIL - 2장 테스트 코드 (1) | 2023.10.31 |
스프링 부트 3로 백엔드 입문하기 TIL - 4장 : 스프링 부트 3와 테스트 (0) | 2023.10.24 |
스프링 부트 3로 백엔드 입문하기 TIL - 3장 : 스프링 부트 3 구조 이해하기 (0) | 2023.10.24 |
스프링 부트 3로 백엔드 입문하기 TIL - 1~2장 : 스프링 부트 3 시작하기 (0) | 2023.10.23 |