JPA(Java Persistemce API)
자바에 있는 데이터를 영구적으로 기록할 수 있는 환경을 제공하는 API즉, 프로그램이 종료되어도 데이터가 영구적으로 기록되어있다.
- 자바 객체와 관계형 데이터 베이스를 매핑(ORM)하는 기술이다.
- 데이터베이스에 직접 접근 ❌ 객체 중심으로 데이터베이스 작업을 처리한다.
- 객체 중심 설계를 통해서 데이터베이스와 비즈니스 로직의 분리가 가능하다.
- 기본적인 CRUD작업이 편리하다.
ORM(Object Relational Mapping)
객체지향 프로그래밍 언어의 객체와 관계형 데이터베이스의 테이블을 자동으로 매핑해주는 기술이다.
- 객체를 데이터베이스에 저장하거나, 조회, 변경하는 역할을 담당한다.
- 장점
- 생산성 - SQL대신 메서드 호출로 데이터베이스 작업을 수행하며, CRUD 작업을 자동화하여 개발 속도가 증가한다.
- 가독성 - 비즈니스 로직과 데이터베이스 로직이 분리된다.
- 유지보수성 - 데이터베이스 구조가 변경되더라도, 객체 설계만 수정하면 비즈니스 로직에 큰 영향을 미치지 않는다.
- 데이터베이스 독립성 - SQL에 의존하지 않으므로, 다른 데이터베이스로 전환 가능
- 재사용성 - 객체 중심으로 설계하므로, 동일한 객체를 다양한 데이터베이스 작업에서 재사용 가능
- 단점
- 성능 이슈 - 복잡한 쿼리나 대량 데이터 작업에서 성능 저하
- 데이터베이스와의 밀접한 제어 부족
ORM이 SQL을 자동으로 생성하므로, 세부적인 SQL 최적화가 어렵거나 제한적이다.
영속성 컨텍스트
엔티티를 영구 저장하는 환경이다. 애플리케이션과 데이터베이스 사이에 객체를 보관하는 가상의 데이터 베이스 역할
- 어떤 데이터를 select로 요청할 때 먼저 영속성 컨텍스트에 데이터를 요청하게 된다. 이때 영속성 컨텍스트에 데이터가 있다면 데이터를 영속성 컨텍스트로부터 받고, 없다면 영속성 컨텍스트가 DB에 데이터를 요청해서 받아서 java object 타입으로 바꿔서 데이터를 준다.
'[ STUDY ] > Spring Boot' 카테고리의 다른 글
Message Converter (0) | 2024.12.07 |
---|---|
@Component, @Autowired (1) | 2024.11.28 |
IOC / DI / AOP (2) | 2024.11.19 |
[ JWT를 활용한 Spring Security ] Access Token 재발급 (0) | 2024.09.25 |
[ JWT를 활용한 Spring Security ] Access Token, Refresh Token 발급 및 저장 (0) | 2024.09.25 |