Spring Boot 개요

Yoon·2022년 6월 6일
0

Spring Boot

목록 보기
1/5

스프링이란?

  1. 프레임 워크이다.
  1. 오픈소스이다.
    2-1. 사용하다가 불편한 부분을 사용자가 고쳐서 쓸 수 있다.
  1. IoC 컨테이너를 가진다.
    3-1. 제어의 반전
    3-2. 인스턴스 생성부터 소멸까지의 인스터스 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해준다.
    3-3. IoC 분류
    3-3.1 DL(Dependency Lookup) : 저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Bean을 Lookup 하는 것
    3-3.2 DI(Dependency Injection) : 각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것
  1. DI를 지원한다.
    4-1. 각 클래스간의 의존관꼐를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것을 말함.
    4-2. 개발자들은 단비 빈 설정파일에서 의존관계가 필요하다는 정보를 추가하면 된다.
    4-3. 객체 레퍼런스를 컨테이너로부터 주입 받아서, 실행 시에 동적으로 의존관계가 생성된다.
    4-4. 컨테이너가 흐름의 주체가 되어 애플리케이션 코드에 의존관계를 주입해 주는 것이다.
    4-5. 코드가 단순해진다.
    4-6. 의존성 주입을 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아진다.
  1. 엄청나게 많은 필터를 가지고 있다.
  1. 엄청나게 많은 어노테이션을 가지고 있다.
  1. MessageConverter를 가지고 있다. 기본값은 현재 JSON 이다.
  1. BufferedReader와 BufferedWriter를 쉽게 사용할 수 있다.
  1. 계속 발전 중이다.

JPA란?

  1. Java Persistence API 이다.
    1.1 Persistence -> 영속성 이라는 뜻
    영속성은 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미.
    1.2 API는 애플리케이션 프로그래밍 인터페이스 라는 뜻.
  1. JPA는 ORM 기술이다.
    2.1 Object Relational Mapping 이라함.
    2.2 DB에 테이블을 제작하면 자바에서 데이터를 select, update, insert, delete 등.. 작업을 함. class를 통해서 DB에 있는 테이블을 모델링 함.
ex) DB세상에 있는 데이터를 자바세상에 모델링 할 때 
Class Team{
	int id;
    String name;
    String year;
}

즉, 자바에서 클래스를 만들어서 실행을 하면 DB에 Table이 자동으로 생성되게 하는 기법을 ORM 이라함.

  1. JPA는 반복적인 CRUD 작업을 생략하게 해준다.
    3.1 select 1건, select all 전체, delete 1건, update 1건, insert 1건 .... 등 이러한 작업들은 반복적이고 자주 일어나는 작업들이다.
    3.2 자바에서 DB를 사용할 때 첫번째 연결때는 신분을 확인하고 세션을 연결함. 그후 두번쨰는 쿼리를 전송함. DB와 자바의 데이터 타입이 다름으로 자바는 데이터를 받아서 자바 오브젝트로 변경을 한다. 이러한 작업들을 JPA는 함수하나로 제공을 해 준다. 즉, 함수를 이용하면 위와같은 작업을 안해도 반복적인 CRUD 작업을 단순하게 처리하게 도와준다.
  1. JPA는 영속성 컨텍스트를 가지고 있다.
    4.1 영속성 : 어떤 데이터를 영구적으로 저장하게 해주는 것을 영속성 이라함.(DB에 저장)
    4.2 컨텍스트 : Context 대상에 관한 모든 정보를 알고 있다는 것.
    4.3 영속성 컨텍스트 : 데이터를 영구적으로 저장해야하는 모든 정보를 알고 있다는 것.
    4.4 자바에서 사과라는 데이터를 가지고 있으면 영속성 컨텍스트도 사과를 가지고있고 DB도 사과를 가지고 있는데, 자바에서 사과라는 데이터를 딸기로 바꾸면 영속성 컨텍스트도 딸기로 업데이트 되게된다. 추후에 딸기 데이터 줘! 하고 DB에 요청을 하면 DB는 엥? 나는 사과데이터로 알고있는데? 라고 생각한다. 그래서 영속성 컨텍스트가 DB에 사과데이터라고 있는 것을 딸기로 업데이트 한다.
    4.5 즉, 자바라는 애가 데이터베이스에 CRUD 하는 일련의 모든 정보를 영속성 컨텍스트를 통해 다 확인할 수 있다.
  1. JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다. (상속, 콤포지션, 연관관계)
    5.1 Object Oriented Programming, 객체지향 프로그래밍 : 모든 데이터를 현실에 빗대어 객체로 다루는 프로그래밍 기법.
    5.2자바의 특징
	캡슐화 : 데이터와 함수를 하나로 묶는다.
    	- 데이터의 세부 내용이 객체 은닉된다. 즉, 데이터 변경으로 인한 에러가 줄어들고, 객체들간에 데이터를 자세히 알 필요가 없으므로 코드가 단순해진다.
        - 객체와 함수의 재사용이 쉽다. 
    정보은닉 : private으로 선언한 데이터는 자기 자신을 통해서만(setter, getter) 접근 가능하다.
        - 각 객체간의 수정이 다른 객체에 미치는 영향을 최소화 한다.
        - 외부 객체의 직접 접근을 막아 프로젝트 확장 시 오류를 최소화 한다.
     추상화 : 불필요한 부분은 생략하고 중요한 것에만 초점을 맞춰 모델로 만든다.
    	- 복잡한 모델을 중요한 것 만 추려 추상화 함으로써 시스템 구조를 시각적으로 표현할 수 있다.
    	- 완전한 시스템이 구축되지 않더라도 개략적으로 모델을 만들어 테스트 하고 살을 붙여나갈 수 있다.
     상속성 : 부모클래스에 정의된 모든 것을 자식 클래스가 물려받는다.
    	- 재정의 할 필요가 없어 코드 작성이 간결해진다.
    	- 상속으로 인한 최소한의 규칙을 통해 프로젝트의 확장 시 오류를 최소화 한다.
    	- 자식클래스 새로운 함수를 추가하거나 부모 클래스의 함수를 재정의(Overriding)해 사용할 수 있다.
     다형성 : 호출하는 객체에 따라 다른 동작을 한다.
    	- 하나의 클래스에서 같은 이름의 함수를 여러 개 가질 수 있다(Overloading). 
        - 호출하는 객체가 어떤 인풋 파라미터를 사용해 호출하냐에 따라 각자 다른 함수가 호출되게 한다. 
        - 즉, 비슷한 기능을 하는 다른 함수를 만들 때 불필요하게 너무 많은 함수명을 만들어 내 가독성이 떨어지는 문제를 해결할 수 있다.

5.3
3. 정리
OOP
- 객체들이 서로 유기적으로 동작하는 프로그래밍 이론
- 코드의 재사용성과 중복제거가 가장 큰 목적
추상화
- 목적과 관련이 없는 부분을 제외해서 필요한 부분을 포착하는 기법
- 객체의 공통된 속성들 중 필요한 부분을 포착해서 클래스로 정의하는 설계 기법
캡슐화
- 외부에 노출할 필요가 없는 정보들은 은닉 (정보은닉)
상속
- 상속 관계에 있는 두 클래스에 대해, 부모 클래스가 자손 클래스에게 속성을 물려주는 것
- 코드의 재사용이 목적
다형성
- 같은 형태이지만 다른 기능을 하는 것
- 오버라이딩은 이와 관련된 기능임

profile
나의 공부 일기

0개의 댓글