영속성 이란? (Java Spring Boot 완전기초)
흔히 백엔드 개발을 처음 접하다 보면,
영속성이란 말을 듣게된다.
영속성?
영속성 컨텍스트?
JPA?
JDBC (interface, Driver)?
영속성을 사전적 정의부터 말하고 들어가는게 이해하기가 쉬울꺼같아,
사전적의미는
: 영원히 계속되는 성질이나 능력(네이버 국어사전 참조)
자 그럼 영원히 계속 되게 하는 성질이 Java spring 에는 어떤게 있을까?
바로 Data 처리가 그 중 하나이다!
간단한 온라인 쇼핑몰을 개발하면,
고객정보, 상품정보, 결제정보, 주문정보는 필수적이다.
이러한 Data 가 시스템 개발 초기때와 운영중일때가 같을까?
당연히 아니다!
(아무도 사용안하고 아무도 관리 안 한다면 모를까?)
한명이라도 회원가입해서 사용하면 그정보는 어딘가 저장되어야한다
그럼 그 정보는 어디에 저장을 할까?
Data 를 저장할 수 있는 공간으로는 (CS 지식을 살려서)
메모리?
하드디스크?
하지만 이 둘다 큰 단점들이 존재한다.
메모리에 영속성 정보를 저장하게 되면, 서버가 불안해서 종료 후 다시 뛰우게 되면 정보가 사라진다
즉, 영속성이 보장되지 않는다는 것이다.
반대로 하드디스크는 영속성을 보장할 수는 있지만,
Data 를 저장, 수정, 삭제, 읽기에서 상당히 느린 성능을 보여준다.
자 그럼?
우리에겐 DB 가있다!
(물론 메모리기반 DB 도 있지만, 메모리특성 중 휘발성을 보완하기 위한 장치를 해당 DB에서 보장한다.)
고객정보, 상품정보, 결제정보, 주문정보 등과 같이 영속성이 보장되어야 할 정보들을
DB에다가 저장을 하는 것이다!
자바 스프링에서는 이를 지원하기 위해 JDBC 라는 interface를 사용하고
간단한 property 세팅으로만으로 DB 에 연결해서 data 를 처리할 수 있게 해준다.
(얼마나 편한것인가?)
그럼 DB 를 사용하려면 쿼리문도 배워야한는가? 라는 질문을 흔하게 듣는다(완전 초보자 들로부터)
물론 배우면 좋다(아니 언젠가는 배워야한다!)
하지만 처음부터 배울 필요는 없다!
왜? JPA 와 같은 ORM 부터 사용한 뒤 배워도 늦지 않다!
(배우면서 배워도 된다.)