영속성(Persistence)는 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말한다.
영속성을 갖지 않는 데이터는 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 사라진다.
메모리 상의 데이터를 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용해 영구적으로 저장하여 영속성을 부여한다.
데이터를 데이터베이스에 저장하는 방법은 다음과 같다.
Persistence Layer는 프로그램의 아키텍쳐에서 데이터에 영속성을 부여해주는 계층이다.
JDBC를 이용해 직접 구현 가능하지만 Persistence Framework를 이용한 개발이 많이 이루어진다.
Persistence Framework는 JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업으로 데이터베이스와 연동되는 시스템을 빠르게 개발할 수 있다. 안정적인 구동을 보장한다.
SQL Mapper와 ORM으로 나뉜다.
ORM(Object-Relational Mapping)은 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말한다.
데이터베이스 데이터 <<- 매핑 ->> Object 필드
와 같은 방향으로 객체를 통해 간접적으로 데이터베이스 데이터를 다룬다.
Persistant API라고도 부른다. (JPA, Hibernate)
객체지향적인 코드
- ORM을 사용하면 SQL쿼리가 아닌 직관적인 코드로 데이터를 조작할 수 있어 개발자가 객체지향 프로그래밍을 하는데 집중할 수 있도록 도와준다.
- 선언문, 할당, 종료같은 부수적인 코드가 없거나 많이 줄어든다.
- 각종 개체에 대한 코드르 별도로 작성하기 때문에 코드의 가독성이 올라간다.
- SQL의 절차적이고 순차적인 접근이 아닌 객체 지향적인 접근으로 생산성이 증가한다.
재사용, 유지보수, 리팩토링 용이성
- ORM은 기존 객체와 독립적으로 작성되고, 객체로 작성되었기 때문에 재활용할 수 있다. 또 매핑하는 정보가 명확하기 때문에 ERD를 보는 의존도를 낮출 수 있다.
DBMS 종속성 하락
- 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하고 객체의 자료형 타입까지 사용할 수 있기 때문에 RDBMS의 데이터 구조와 객체지향 모델 사이의 간격을 좁힐 수 있다.
- 객체에만 집중할 수 있기 때문에 DBMS를 교체하는 큰 작업에도 리스크가 적고 드는 시간도 줄어들게된다.
- 예를 들어 자바에서 가공할 경우 equals, hashCode의 오버라이드같은 자바의 기능을 이용할 수 있고 간결하고 빠르게 가공 가능하다.
https://velog.io/@dnjscksdn98/Database-ORM%EC%9D%B4%EB%9E%80
https://geonlee.tistory.com/207