방명록
- 스프링부트 개념정리2022년 07월 26일 13시 52분 39초에 업로드 된 글입니다.작성자: 원2728x90반응형
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 다음글이 없습니다.이전글이 없습니다.댓글 - IoC 컨테이너 - 제어의 역전