위로 아래

Persistence

Persistence

  1. 영속성
  2. 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성
  3. 영속성이 없는 데이터는 메모리에서만 존재한다. (프로그램을 종료하면 모두 사라진다)

 

Object persistence

  1. 영구적 객체
  2. 메모리 상의 데이터를 관계형 데이터베이스 등을 활용하여 영구적으로 저장하여 영속성을 부여
  3. 방법 세가지
    1. JDBC (Java)
    2. Spring JDBC (jdbcTemplate)
    3. Persistence Framework (Hibernate, MyBatis)

 

Persistence Layer

  1. 프로그램의 아키텍처에서 데이터에 영속성을 부여해주는 계층
  2. JDBC를 이용하여 직접 구현할 수 있지만 Persistence framework를 이용한 개발이 더 많이 이루어진다

 

Persistence Framework

  1. JDBC 프로그래밍의 복잡함이나 번거로움 없이, 간단한 작업만으로 데이터베이스와 연동되는 시스템을 개발 가능
  2. 안정적인 구동을 보장
  3. 두가지 종류
    1. SQL Mapper
    2. ORM

 

ORM

ORM(Object Relational Mapping)

  1. 객체 - 관계 매핑
  2. 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것
    1. 객체 지향 프로그래밍 - 클래스
    2. 관계형 데이터베이스 - 테이블
  3. 객체를 통해 간접적으로 데이터베이스 데이터를 다룬다
  4. Persistant API 라고도 할 수 있다 (JPA, Hibernate)

 

ORM 장점

  1. 객체 지향적인 코드로, 비즈니스 로직에 더 집중할 수 있다.
    1. SQL Query문이 아니라, 직관적인 method로 데이터를 조작할 수 있다.
    2. 선언문, 할당, 종료 같은 부수적인 코드가 적다
    3. SQL처럼 절차적이지 않고, 객체 지향적으로 접근할 수 있다.
  2. 재사용 및 유지보수 용이
    1. ORM은 독립적으로 작성되어 재활용 할 수 있다.
    2. 모델에서 가공된 데이터를 컨트롤러에 의해 뷰와 합쳐지는 형태로 디자인 패턴을 견고하게 다질 수 있다.
    3. 매핑 정보가 명확하기 때문에, ERD를 보는 것에 대한 의존도를 낮출 수 있다.
  3. DBMS 종속성 감소
    1. 객체 간의 관계를 바탕으로 SQL을 자동 생성하기 때문에, RDBMS 데이터 구조와 Java 객체지향 모델 사이의 간격을 좁힐 수 있다.
    2. DB에 종속적이지 않다
    3. DBMS를 교체하는 거대한 작업이 이루어진다 하더라도 비교적 리스크와 소요 시간이 적다
    4. 자바에서 가공할 경우, equals, hashCode 등의 자바 기능을 이용할 수 있다.

 

ORM 단점

  1. ORM만으로는 서비스 구현이 어렵다
    1. 사용은 편하지만 설계를 신중히 해야한다.
    2. 프로젝트의 복잡성이 커질 경우 난이도가 올라갈 수 있다.
    3. 잘못 구현된 경우, 속도 저하가 일어날 수 있다.
  2. 프로시저가 많은 시스템에서는 ORM의 객체 지향적 장점을 활용하기 어렵다.
    1. 이미 프로시저가 많은 시스템에서는 다시 객체로 바꿔야한다. 이 과정에서 생산성 저하가 일어날 수 있다.