처음부터 시작하는 Java
  • 스프링부트 개념정리
    2022년 07월 26일 13시 52분 39초에 업로드 된 글입니다.
    작성자: 원2
    728x90
    반응형

    class - 설계도 (의자 설계도)

     

    abstract class - 추상적 설계도 (가구 설계)

     

    interface - 실체화가 된 것 (의자)

     

    ioc - 제어의 역전 (주도권이 스프링에 있음)

     

    • IoC 컨테이너 - 제어의 역전
      누누 클래스를 만들었는데 다른곳에서 누누를 쓰고 싶을때 ?
      스프링이 객체를 스캔해서 heap 메모리에 저장해둔다 
      스프링이 객체를 관리 누누를 하나만 만들어서 가져가서 씀

     

    • DI
      dependency injectsion 의존성 주입
      IOC 에서 스캔해준 하나의 object를 가져가서 씀
      heap 메모리에 A라는 [이름을 가진] 클래스가 없다면 해당 변수에는 null 이 아니고
      해당 type를 heap 에서 찾아서 값을 넣어준다. 그것이 DI 


    • 많은 필터를 가지고 있다
      web.xml 은 필터의 기능을 한다 (톰켓)
      스프링에서 필터의 기능을 하는것 = 인터셉터(AOP)



    • 많은 어노테이션
      컴파일체킹
      리플렉션 (분석하는 기법 -> 런타임시 분석)
      스프링에서 어노테이션은 주로 객체를 생성한다

      @Component -> 클래스 메모리에 로딩 (heap에) IoC
      @Autowired -> 로딩된 객체를 해당 변수에 넣음

      리플렉션 (메서드, 필드, 어노테이션을 체킹) : 어떤 class 안에 어떤 것이 있는지 분석하는 기법
      -> 있다면 무엇을 실행해라 가능
      ex)리플렉션시 @Autowired 가 있다면 해당 변수에 읽어들인 객체를 주입함
      -> A라는 객체를 찾아서 넣음, 만약 A라는 이름의 객체가 없다면 같은 type 를 찾아서 넣음


    • MessageConverter (기본 값 JSON)

      스프링 라이브러리로 존재 (jackson)

      ex) java 언어 -> json -> python 언어
      python 언어 -> json -> java 언어
      중간언어의 역할을 하는것이 json

    • BufferedWrite & BufferedReader 를 쉽게 사용할 수 있다


      1byte : 통신 단위 = 8bit = 256

      유니코드 UTF-8 : 3byte 통신

      통신을 보낼 때( Byte Stream) : 1Byte : 8bit

      자바에서는 InputStream 으로 읽는다 (단위 byte)

      InputStreamReder -> 바이트를 문자를 받음 (배열로 :: 단점 크기가 정해져있다) (이거 안씀)

      ★BufferdReader -> 가변길이의 문자를 받을수 있다 (class임)

      (Jsp 에서는 request getReader = BufferedReader)
      (Jsp 내장객체 : out = Bufferedwrite)
      ★BufferdWriter -> 가변길이의 문자를 전송 (내려쓰기 기능이 X) (class임)
      java 에서는 Printwriter 를 사용 (print(), println() 을 포함함, Bufferedwrite와 똑같지만 이걸 많이씀)

      @ResponseBody -> BufferedWrite
      @RequsetBody -> BufferedReader


    • JPA

      Java Persistence API (DBMS에 기록할수 있도록 하기 위해 존재하는 API, 그런 환경을 조성함)
      Persistence(영속성) : 데이터를 생성한 프로그램의 실행이 종료되어도 사라지지 않는 데이터의 특성
      RAM => 휘발성 데이터 저장가능 => 컴터가 꺼지면 사라짐
      Persistence는 하드디스크에 저장하듯이 기록되어 있는것

      API 애플리케이션 프로그래밍 인터페이스

      프로토콜(동등한 관계 www는 interface 로 만든게 아님) / 인터페이스 (상하 관계가 존재하는 약속)
      약속 : 약속 을 의미

      ::: Java Persistence Application Programing interface



    • JPA는 ORM 기술
      Object Relational Mapping (오브젝트를 DBMS에 등록하는 방법론 같은것)
      ORM -> 나의 하인같은 느낌
      모델링 : 추상적인 개념을 현실세계에 뽑아내는것 (DB 테이블을 자바에서 모델링)
      DB
      NUM int
      NAME varchar
      ADDRESS varchar

      class A {
       int num;
       String name;
       String address
      }

      원래순서 DB (1) class (2) TRM
      but JPA ORM 순서 class(1) DB(2) ORM


    • 반복적인 CRUD 작업을 생략해줌
      자바 커넥션 요청 > DB 세션오픈 > 자바 Connection 을 가짐 > 2번째 자바요청 쿼리전송가능
      > DB 쿼리를 통해 작업수행 Data 전송 > Java 해당 데이터 Java Object로 변경  > DB 세션 끊음 > 작업후 Connection 끊음

      이런 반복적인 작업을 함수 하나로 해결 ()



    • 영속성 컨텍스트를 가지고 있다
      영속성 : 데이터 -> 영구적으로 저장 (DB)
      context : 해당 대상의 모든정보

      DB와 OOP의 불일치성을 해결하기 위한 수단 제공
      원래는 테이블에 맞춘 클래스를 만들어야하나
      ORM 을 하게되면 java 가 주도권을 맞춘 모델을 만들수 있다
      >>> JPA 가 자동으로 데이터를 맞춰서 넣어준다 DB나 등등

     

    • JPA 는 OOP 관점에서 모델링을 해준다

      상속, 콤포지션, extends

      방언 처리가 용이하여 유지보수에 좋다
    728x90
    반응형

    'Spring > Spring boot' 카테고리의 다른 글

    시간 측정하는 간단한 aop  (0) 2022.12.22
    JPA 로 데이터 액세스  (0) 2022.08.17
    mariadb로 데이터 액세스  (0) 2022.08.16
    Restful 웹 서비스 구축  (0) 2022.08.16
    스프링부트 개념정리 2  (0) 2022.07.27
    댓글