[ORM의 개념]
- Object Relational Mapping, 객체-관계 매핑
- 객체 지향 프로그래밍에서의 객체를 구현한 클래스와 RDB의 테이블을 연결해주는 것
- ORM을 통해 자동으로 SQL문을 생성하여 연결하는 방식
- 즉, 사용자가 SQL문을 짤 필요가 없어진다
[ORM의 장단점]
1. 장점
- 객체지향적인 코드 작성 가능 : ORM을 활용하면 메서드를 통해서 데이터베이스 관리가 가능해지므로, 프로그래밍에 집중할 수 있게 함
- DBMS 종속성 하락 : 대부분의 ORM은 DB에 종속적이지 않기 때문에 구현 방법 뿐만 아니라 자료형 타입까지 유효함
- 재사용 및 유지보수의 편리성 증가 : ORM은 독립적으로 작성되어있고, 해당 객체들을 재활용할 수 있음/ 매핑 정보가 정확하여 ERD에 대한 의존도를 낮출 수 있음
- 데이터베이스 독립성 : 데이터베이스의 변경이나 전환에 대한 비용이 낮아짐 (코드의 변경 없이도 다른 종류의 데이터베이스로 변경 가능)
- 생산성 향상
2. 단점
- 성능 손실 : ORM은 데이터베이스와의 매핑 및 객체 추적을 위한 추가 작업이 필요하여 일부 성능 손실이 발생할 수 있음
- 일관성의 어려움 : 데이터베이스와 객체 사이의 매핑이 항상 완벽하게 일치하지 않을 수 있음
- 복잡한 객체 관리의 어려움 : 객체 간의 복잡한 관계를 다루는 경우, 처리가 복잡해질 수 있음 (다대다 매핑 등)
[JPA]
1. JPA란
- ORM 기술의 표준 명세로, 자바에서 제공하는 API
- 즉, JPA는 인터페이스고, 이를 구현한 대표적인 구현체는 Hibernate, EclipseLink등이 있음
2. 동작 방식
(1) 엔티티
- 데이터베이스의 테이블에 대응되는 클래스
- @Entity가 붙은 클래스는 JPA에서 관리하며, 엔티티라고 함
(2) 엔티티 매니저 팩토리
- 엔티티 매니저 인스턴스를 관리하는 주체
- 사용자로부터 요청이 오면 엔티티 매니저로부터 엔티티 매니저 생성
(3) 엔티티 매니저
- 영속성 컨텍스트에 접근하여 엔티티에 대한 데이터베이스 작업을 제공
- 내부적으로 데이터베이스 커넥션을 사용해 데이터베이스에 접근
(4) 영속성 컨텍스트
- 엔티티를 영구 저장하는 환경
* 영속성 : 프로그램의 실행이 종료되더라도 그 상태를 영구적으로 보존하고 있는 것을 의미
생명주기 | 내용 |
비영속 (new) | new 키워드를 통해 생성된 상태로, 영속성 컨텍스트와 관련이 없는 상태 |
영속 (managed) | - 엔티티가 영속성 컨텍스트에 저장된 상태로 영속성 컨텍스트에 의해 관리되는 상태 - 영속 상태에서 데이터베이스에 저장되지 않으며 트랜잭션 커밋 시점에 데이터베이스에 반영 |
준영속 상태 (detached) | 영속성 컨텍스트에 엔티티가 저장되었다가 분리된 상태 |
삭제 상태 (removed) | 영속성 컨텍스트와 데이터베이스에서 삭제된 상태 |
'부트캠프 > 백엔드 스터디' 카테고리의 다른 글
[DB] 트랜잭션, ACID (0) | 2024.01.29 |
---|---|
[DB] KEY (1) | 2024.01.29 |
[DB] index (0) | 2024.01.16 |
[DB] RDBMS/NoSQL (1) | 2024.01.15 |