Christmas Pikachu SpringBoot - 스프링 개념 정의 (JPA) , 스프링 동작 원리
개발일지/스프링

SpringBoot - 스프링 개념 정의 (JPA) , 스프링 동작 원리

ZI_CO 2022. 12. 7.

스프링 동작 원리 

  1. DispactcherServlet이 스프링 컨테이너에서 요청을 받습니다.
  2. DispactcherServlet은 요청된 URL, URI , HandlerMapping 객체에 넘기고, 호출해야 하는 Controller 메소드 정보를 얻는다.
  3. DispatcherServlet이 HandlerAdapter 객체를 가져온다.
  4. HandlerAdapter 객체의 메소드를 실행 한다.
  5. Controller 객체는 비즈니스 로직을 처리하고 그 결과를 바탕으로 (뷰, jsp, timeleaf..) 전달할 객체를 Model 객체의 저장한다. DispathcerServlet view name 을 리턴하게 된다.
  6. DispathcerServlet 은 view name 을 View Resolver 전달하여 view 객체를 얻는다.
  7. DispathcerServlet 은 view 객체를 화면에 표시 의뢰한다.
  8. view 객체에 해당하는 (JSP, mustache, Thymeleaf) 를 호출하며, 뷰는 model 객체에서 화면 표시에 필요한 객체를 가져와 화면을 표시하게 된다.

 

[ 스프링이란 ?] -1 기본이론

※ 스프링은 프레임 워크(framework, 틀 안에서 동작을 함)이다.

※ 스프링은 오픈 소스 이다.

※ 스프링은 IoC 컨테이너를 가지고 있다.

※ 스프링은 DI를 지원한다.

※ 스프링은 아주 많은 Filter들이 존재한다.

※ 스프링은 어노테이션을 가지고 있다.

※ 스프링은 MessageConverter를 가지고 있다.(Object Mapper가 동작함)

※ 스프링은 BufferedReader와 BufferedWriter를 쉽게 사용 할 수 있다.

※ 스프링은 계속 버전 업중이다.

 

class
설계도
object,
실체화가 가능한 것
instance
실체화가 된 것

 

 

[ 스프링이란 ? ] -2 (JPA)

JPA란 ?

JPA
JPA는 Java Persistence API 의 약자 이다.
Persistence : 영속성
▶ 데이터를 생성한 프로그램의 실행이 종료가 되더라도 사라지지 않는 데이터의 특성을 의미한다.
▶ 파일 시스템, 관계형 데이터베이스 등을 활용해서 구현한다.
▶ 결국 영속성을 특정 데이터 구조를 이전 상태로 복원 할 수 있게 해주어,
프로그램의 종료와 재개를 자유롭게 해준다.
API
▶ A : Application (프로그램)
▶ P : Programming(프로그래밍)
▶ I : Interface (강제성이 있는 약속, 규칙, 규약)
=> JPA는 자바 프로그램을 할 때, 데이터를 영구적으로 저장하기위한 interface 이다.
JPA는 ORM 기술이다.
Object Relational Mapping : 객체 - 관계 매핑 (<-> TRM (Table Relational Mapping))
=> 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결) 해주는 것을 말한다.
객체 지향 프로그래밍은 클래스를 사용하고, RDBMS는 테이블을 사용한다.
객체 모델과 관계형 모델간의 불일치가 존재한다.
Code First!
ORM을 통해서 객체간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결해준다.
JPA는 반복적인 CRUD 작업을 생략하게 해준다. (insert / update / delete / select / selectAll)
반복되는 작업들을 줄여준다.(Connection , Statement, ResultSet..등)
JPA는 영속성 컨텍스트를 가지고 있다.
JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다. (DB테이블에 객체 저장 불가)
JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다. (상속, 컴포지션, 연관관계)
JPA는 방언 처리가 용이하여 Migration 하기 좋다. 유지보수에 좋다.

댓글