위로
아래
Persistence
Persistence
- 영속성
- 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성
- 영속성이 없는 데이터는 메모리에서만 존재한다. (프로그램을 종료하면 모두 사라진다)
Object persistence
- 영구적 객체
- 메모리 상의 데이터를 관계형 데이터베이스 등을 활용하여 영구적으로 저장하여 영속성을 부여
- 방법 세가지
- JDBC (Java)
- Spring JDBC (jdbcTemplate)
- Persistence Framework (Hibernate, MyBatis)
Persistence Layer
- 프로그램의 아키텍처에서 데이터에 영속성을 부여해주는 계층
- JDBC를 이용하여 직접 구현할 수 있지만 Persistence framework를 이용한 개발이 더 많이 이루어진다
Persistence Framework
- JDBC 프로그래밍의 복잡함이나 번거로움 없이, 간단한 작업만으로 데이터베이스와 연동되는 시스템을 개발 가능
- 안정적인 구동을 보장
- 두가지 종류
- SQL Mapper
- ORM
ORM
ORM(Object Relational Mapping)
- 객체 - 관계 매핑
- 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것
- 객체 지향 프로그래밍 - 클래스
- 관계형 데이터베이스 - 테이블
- 객체를 통해 간접적으로 데이터베이스 데이터를 다룬다
- Persistant API 라고도 할 수 있다 (JPA, Hibernate)
ORM 장점
- 객체 지향적인 코드로, 비즈니스 로직에 더 집중할 수 있다.
- SQL Query문이 아니라, 직관적인 method로 데이터를 조작할 수 있다.
- 선언문, 할당, 종료 같은 부수적인 코드가 적다
- SQL처럼 절차적이지 않고, 객체 지향적으로 접근할 수 있다.
- 재사용 및 유지보수 용이
- ORM은 독립적으로 작성되어 재활용 할 수 있다.
- 모델에서 가공된 데이터를 컨트롤러에 의해 뷰와 합쳐지는 형태로 디자인 패턴을 견고하게 다질 수 있다.
- 매핑 정보가 명확하기 때문에, ERD를 보는 것에 대한 의존도를 낮출 수 있다.
- DBMS 종속성 감소
- 객체 간의 관계를 바탕으로 SQL을 자동 생성하기 때문에, RDBMS 데이터 구조와 Java 객체지향 모델 사이의 간격을 좁힐 수 있다.
- DB에 종속적이지 않다
- DBMS를 교체하는 거대한 작업이 이루어진다 하더라도 비교적 리스크와 소요 시간이 적다
- 자바에서 가공할 경우, equals, hashCode 등의 자바 기능을 이용할 수 있다.
ORM 단점
- ORM만으로는 서비스 구현이 어렵다
- 사용은 편하지만 설계를 신중히 해야한다.
- 프로젝트의 복잡성이 커질 경우 난이도가 올라갈 수 있다.
- 잘못 구현된 경우, 속도 저하가 일어날 수 있다.
- 프로시저가 많은 시스템에서는 ORM의 객체 지향적 장점을 활용하기 어렵다.
- 이미 프로시저가 많은 시스템에서는 다시 객체로 바꿔야한다. 이 과정에서 생산성 저하가 일어날 수 있다.