Persistence
- 데이터를 생성한 프로그램이 종료되어도 영속적으로 데이터가 유지되는 특성이다.
- 메모리 상의 데이터를 파일시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 영구적으로 저장하여 영속성을 부여함.
- Persistence Framework
- SQL Mapper, ORM
- JPA, Hibernate, Mybatis ..
What is ORM
Object Relational Mapping
- 객체 - 관계형 데이터베이스의 데이터 자동 매핑해주는 것, 적은 비용과 개발의 효과가 있다.
- 객체를 통해 간접적으로 데이터베이스 데이터 다룸.
- 객체 지향 프로그래밍 - 클래스, 관계형 데이터베이스 - 테이블/ object -> table, table -> object conversion이 용이하다.
- ORM을 사용하여 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치 해결
- application tier에 객체를 캐싱함으로서 시스템 performance가 향상된다.
- 개발자에게 database 구조를 이해하기 쉽게 제공한다.
장점
- 생산성
- 별도의 data-access code를 작성할 필요가 없기 때문에 개발 시간을 감소시킨다.
- 어플리케이션 디자인
- 잘 작성된 ORM은 Design pattern을 도입하여 application 디자인이 나올 수 있다. 예를 들어 ORM을 사용하여 data interface를 관리한다면 개발자는 완벽한 database schema를 만들 필요는 없다.
- 코드 재사용성
- testing 감소
단점
- 성능이 느리다. ORM을 동작시키기 위해 별도의 코드가 필요하기 때문이다.
- SQL에 대해 알아야한다.
- Poor mapping
- 간혹 table과 object간의 잘못된 매핑을 하기도 한다.
- Schema와 Migrations에 영향을 끼친다.
- 만약 ORM에 migrations 기능이 존재하지 않는다면 직접 migration 코드를 짜야한다.
altex soft ORM