Persistence
Persistence(영속성)
Persistence란??
프로그램종료시 데이터는 메모리에만 존재하기때문에 사라짐.
이를 해결하기 위해 파일시스템과 관계형데이터베이스를 활용하여 구현함.
데이터가 영속성을 가지기 위해 Spring에서 사용하는 방법은 아래와 같음.
- JDBC(Java)
- Spring JDBC
- Persistence Framework
Persistence Framework
Persistence Framework란 “자료를 DB에 저장하는 과정을 도와주는 소프트웨어”
데이터를 가공하는 자바 객체층과 데이터를 저장하는
DB층 사이를 매끄럽게 연결하는 이음매라고 할 수 있음.
Persistence Framework에는 ORM과 SQL Mapper가 있음.
SQL Mapper란??
객체와 관계형 DB의 데이터를 개발자가작성한 SQL로 매핑시켜주는
Persistence Framework의 한 종류.
개발자가 직접 SQL을 작성해야하며,
SQL문을 실행하고 얻은 데이터를 객체로 매핑해줌.
하지만.. 단순 CRUD시 매번 매핑하기위해 Mybatis를 작성하는 노가다아닌 노가다를 해야함
이를 해결하기위한 mybatis generate라는 기똥찬 플러그인이 있음.
장점:
- SQL에대한 이해도가 있다면, 수월하게 사용가능.
- 세부적인 SQL변경시, 편리함
단점:
- 네?? 뭐라구요?? DB를 변경해야한다구요?? (DBMS에 종속적임)
ORM(Object-relational mapping)이란?
ORM이라는 기술이있음.
이 기술은 객체와 테이블을 연결하기위한 기술이다.
장점:
prefix: (이 기술을사용하면)
- 쿼리에 집중할 필요 없이, 빠르게 개발가능 (비즈니스로직에만 집중할 수 있음)
- DBMS에 종속적이지 않음.
- 재사용에 용이함.
단점:
prefix : (이기술을 사용하면)
- 프로젝트의 복잡성이 커질경우, 난이도 상승
- 잘못 적용시, 속도저하발생
- 복잡한 SQL을 사용하지못함.
JPA란???
ORM기술을 자바진영에서 사용하기위해 정의된 인터페이스이다.(그저 설명서이다..) 자바진영에서 관계형DB를 사용하는 방식을 정의한 인터페이스이다.
Hibernate:
위에있는 JPA인터페이스(설명서)를 구현받은 구현체의 한 종류이다.(실체)
굳이(?).. 비교하자면 떡볶이 레시피가있고, 이것을 엽기떡볶이가 만드느냐,
배떡이만드느냐의 차이임.