MVC (Modal-View-Controller):
MVC 아키텍처는 애플리케이션을 모델, 뷰 및 컨트롤러로 구성합니다.
모델(Model): 애플리케이션의 비즈니스 로직 및 데이터를 처리합니다. 데이터베이스와 상호 작용하여 데이터를 저장하고 검색하며, 애플리케이션의 핵심 비즈니스 로직을 구현합니다.
뷰(View): 사용자에게 정보를 표시하고 사용자 인터페이스(UI)를 제공합니다. HTML, CSS 및 JavaScript로 구성되며, 사용자에게 데이터를 표시하고 사용자의 상호 작용을 수신하여 컨트롤러에 전달합니다.
컨트롤러(Controller): 사용자의 입력을 처리하고 모델과 뷰 간의 상호 작용을 관리합니다. 사용자 요청을 받아 모델을 업데이트하고 그 결과를 적절한 뷰에 전달하여 사용자에게 응답합니다.
API (Application Programming Interface):
API는 소프트웨어 응용 프로그램 간에 통신하기 위한 인터페이스를 제공합니다. 웹 API는 네트워크를 통해 클라이언트 애플리케이션이 서버 측 애플리케이션과 상호 작용할 수 있도록 합니다.
웹 API는 주로 HTTP 프로토콜을 사용하여 요청 및 응답을 처리하며, XML 또는 JSON과 같은 데이터 형식을 사용하여 정보를 전송합니다.
주요 용도로는 외부 시스템과의 통합, 다른 플랫폼에서의 데이터 공유, 마이크로서비스 아키텍처를 구축하는 등이 있습니다.
REST(Representational State Transfer) 또는 GraphQL과 같은 웹 API 설계 아키텍처를 사용하여 API를 설계할 수 있습니다.
JPA : Java Persistence API, 자바 표준 ORM, 자바에서 관계형 데이터베이스를 사용하는 방식으로 정의한 인터페이스
ORM : Object Relational Mapping, 자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법
Entity : 데이터베이스의 테이블과 매핑되는 객체를 의미하며, 데이터베이스의 테이블과 직접 연결된다는 아주 특별한 특징
Entity Manager : 엔티티를 관리해 데이터베이스와 애플리케이션 사이에서 객체를 생성 / 수정 / 삭제, 엔티티 매니저 팩토리에서 생성
쿼리 : 데이터베이스에서 데이터를 조회하거나 삭제, 생성, 수정 같은 처리 명령문
JPA(Java Persistence API)는 자바에서 객체를 관계형 데이터베이스에 영속화(저장 및 조회)하기 위한 API입니다. JPA는 ORM(Object-Relational Mapping) 기술의 한 종류로, 객체와 관계형 데이터베이스 간의 매핑을 자동화하여 개발자가 객체 중심으로 데이터를 다룰 수 있도록 지원합니다.
1. 객체-관계 매핑(Object-Relational Mapping, ORM):
JPA는 자바 객체와 관계형 데이터베이스 테이블 간의 매핑을 지원합니다. 개발자는 객체를 사용하여 데이터를 조작하고, JPA가 이를 관계형 데이터베이스에 매핑하여 저장 및 조회를 처리합니다.
2. Entity 클래스:
JPA에서는 관리되는 엔티티 객체를 나타내는 Entity 클래스를 정의합니다. 각 엔티티 클래스는 데이터베이스의 테이블에 대응되며, JPA는 엔티티 객체와 데이터베이스 테이블 간의 매핑을 관리합니다.
3. EntityManager:
EntityManager는 JPA에서 영속성 컨텍스트를 관리하는 인터페이스입니다. 영속성 컨텍스트는 엔티티 객체의 생명주기를 관리하고, 데이터베이스와의 데이터 변경을 추적합니다.
4. JPQL(Java Persistence Query Language):
JPQL은 JPA에서 사용되는 객체 지향 쿼리 언어입니다. SQL과 유사하지만 엔티티 객체를 대상으로 쿼리를 작성할 수 있습니다.
5. 지연 로딩(Lazy Loading):
JPA는 연관 관계를 가진 엔티티 객체들을 필요할 때까지 로딩하지 않고, 필요한 시점에 로딩하는 지연 로딩 기능을 제공합니다. 이를 통해 성능을 향상시킬 수 있습니다.
6. 트랜잭션 관리:
JPA는 트랜잭션 관리를 지원하여 데이터베이스 작업을 트랜잭션 단위로 처리할 수 있습니다. 트랜잭션을 시작, 커밋 또는 롤백할 수 있습니다.
JPA는 ORM 기술을 사용하여 개발자가 객체 중심으로 데이터베이스를 조작할 수 있도록 도와줍니다. 이를 통해 개발자는 SQL 쿼리를 직접 작성하는 것보다 객체 지향적이고 생산적인 방식으로 데이터를 다룰 수 있습니다.
'뒤끝 (Back-End)' 카테고리의 다른 글
[JSP] 웹 프로그래밍 (2) | 2024.10.09 |
---|---|
[Spring boot] 게시판 API 만들기 (0) | 2024.04.06 |
[Spring boot] 스프링 부트 기본 어노테이션 (0) | 2024.04.06 |
[Spring boot] 스프링 부트에 대해 알아가기 (0) | 2024.04.05 |
[Spring boot] Lombok, DTO 추가 / Test 코드 구조 (0) | 2024.04.01 |