[용어정리] 영속성, MyBatis, ORM, JPA, Hibernate, REST, Session, Cookie
1. 영속성
- 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 데이터가 상실됨
2. MyBatis
- 자바 기반의 오픈 소스 ORM(Object-Relational Mapping) 프레임워크
- 데이터베이스와 자바 객체 간의 매핑을 단순화하고 SQL 쿼리를 관리하기 위해 사용됨
- SQL 매핑 파일(XML 또는 어노테이션)을 사용하여 데이터베이스와 객체 간의 매핑 규칙을 정의
- 별도의 SQL 쿼리를 작성하고 JDBC 코드를 직접 작성하는 대신, 매핑 파일을 통해 객체를 데이터베이스에 CRUD
3. ORM(Object Relational Mapping)
- 데이터베이스의 데이터를 클래스와 자동으로 연결(매핑)해 주는 것을 의미
- OOP는 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용
- 객체 모델과 관계형 모델 간에 패러다임 불일치가 존재하기 때문에 ORM을 이용하여 객체의 속성 및 객체들 간의 관계를 바탕으로 자동으로 테이블을 생성하고, SQL을 대체할 수 있는 Java Persistent API(JPA)를 제공
4. Hibernate
- JPA를 사용하기 위해서 JPA를 구현한 ORM 프레임워크 중 하나
- JPA 인터페이스의 구현체로, javax.persistence.EntityManager와 같은 JPA의 인터페이스를 직접 구현한 라이브러리
5. Spring Data JPA
- Hibernate를 변경하여 JPA를 쓰기 편하게 만들어 놓은 모듈
- JPA를 한 단계 추상화 시킨 Repository라는 인터페이스를 제공
- 사용자가 Repository 인터페이스에 규칙대로 메소드를 입력하면, Spring이 자동으로 적합한 쿼리를 실행하는 구현체를 만들어 스프링 Bean으로 등록
6. REST(REpresentational State Transfer)
- 자원 지향 설계(ROA; Resource Oriented Architecture)의 일종으로 웹 상에 존재하는 다양한 자원들을 HTTP 프로토콜을 이용하여 전송하는 인터페이스
- 자원(이미지, 동영상, DB 자원 등)에 고유한 URI(Uniform Resource Identifier)를 부여한 후 GET(READ, 자원 조회), POST(CREAT, 자원 생성), PUT(UPDATE), DELETE의 4가지 HTTP METHOD를 이용하여 자원들을 주고 받음
* RESTful
- REST 설계 방식을 따르는 시스템
- URI는 동사보다는 명사를, 대문자보다는 소문자를 사용
- 마지막에 슬래시(/)를 포함하지 않음
- 언더바 대신 하이픈(-)을 사용
- 파일확장자는 URI에 포함하지 않음.
- REST API: RESTful 시스템 구성을 위한 API
7. Session & Cookie
- HTTP 프로토콜은 서버와 클라이언트간의 관계를 유지하지 않는 Stateless 프로토콜
- 따라서, 웹 페이지 간 연결 지속성과 사용자의 요청 처리 효율성을 높이기 위해 Stateless 상태를 해결해야 함
- 이 문제를 해결하기 위해 도입된 방식이 Session과 Cookie
* Session
- 서버에 데이터를 저장하고 유지
- 보완성이 높지만 서버에 부하를 줌
- 복잡한 데이터를 저장하고 관리하는데 적합
- HttpServletRequest 객체를 상속 받은 HttpSession 객체로부터 생성
* Cookie
- 클라이언트(웹 브라우저)에 데이터를 저장하고 유지
- 보안성이 낮지만 서버에 부하를 주지 않음
- 작은 데이터를 저장하고 관리하는데 적합
- HttpServletResponse 객체를 상속 받은 Cookie 객체로부터 생성