Spring

[용어정리] 영속성, MyBatis, ORM, JPA, Hibernate, REST, Session, Cookie

SouthernDuck 2023. 7. 4. 13:25
728x90

 

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

 

RESTfull 서비스 구성도

 

7. Session & Cookie

- HTTP 프로토콜은 서버와 클라이언트간의 관계를 유지하지 않는 Stateless 프로토콜
- 따라서, 웹 페이지 간 연결 지속성과 사용자의 요청 처리 효율성을 높이기 위해 Stateless 상태를 해결해야 함
- 이 문제를 해결하기 위해 도입된 방식이 Session과 Cookie

 

* Session

- 서버에 데이터를 저장하고 유지

- 보완성이 높지만 서버에 부하를 줌

- 복잡한 데이터를 저장하고 관리하는데 적합

- HttpServletRequest 객체를 상속 받은 HttpSession 객체로부터 생성

 

* Cookie

- 클라이언트(웹 브라우저)에 데이터를 저장하고 유지

- 보안성이 낮지만 서버에 부하를 주지 않음

- 작은 데이터를 저장하고 관리하는데 적합

- HttpServletResponse 객체를 상속 받은 Cookie 객체로부터 생성

728x90
반응형