제이제이
article thumbnail
스프링부트 동작원리(이론) - 웹서버, 톰캣

1. 스프링 부트는 내장 톰캣을 가집니다. 스프링 부트에서는 톰캣을 따로 설치할 필요가 없이 바로 프로그램을 실행할 수 있습니다. 톰캣에 대해서 설명하기 전 1. 먼저 웹 서버에 대한 이해를 하고 나서 2. 톰캣과 웹 서버의 차이에 대해 알아보겠습니다. 웹 서버(Web Server) 다음의 그림을 먼저 살펴봅시다. 다음 그림과 같이 A가 내가 가지고 있는 컴퓨터라고 가정하겠습니다. 내가 가진 컴퓨터에는 A게임에 대한 공략법들이 있는 자료들이 있고 이를 친구들이 요청하는 상황입니다. 이때 내가 가진 컴퓨터는 을(친구들)이 필요한 자료들(A게임에 대한 공략법들이 적혀져 있는 자료)가 있으므로 갑이 됩니다. 반대로 게임에 대한 자료들을 원하는 친구들의 컴퓨터는 을이 됩니다. 이때의 과정을 순서로 나타내면 다음..

article thumbnail
스프링부트 동작원리(이론) - 소켓통신, HTTP통신

HTTP에 대한 이해 먼저 스프링부트의 동작방식에 대해서 살펴보기전 스프링부트에서의 요청과 응답은 HTTP 위에서 이루어지기에 먼저 HTTP에 대하여 살펴보고 본격적으로 이론을 살펴봅시다. 소켓 ❓소켓이란? 🔥 운영체제에서 네트워크를 통해서 프로그램의 데이터를 주고 받을 수 있는 통신의 종착점을 의미합니다 다음의 그림을 통해 이해해봅시다. 위와 같이 A와 B가 있습니다. 만약 B에서 A에게 소켓을 이용해 메시지를 전달하고 응답 받고 싶다고 하면 어떻게 해야 할까요? 다음과 같은 과정을 거쳐 메시지를 주고 받습니다. 과정 1. B가 A와 통신을 하고 싶다면 A의 ip주소와 포트번호를 이용해 연결합니다. ex) A의 ip주소(ip주소): 5000번 포트(포트번호) 2. 연결되는 순간 A와 B는 메시지를 주고..

article thumbnail
스프링 이론(JPA) - JPA개요, ORM, CRUD, 영속성 컨텍스트, 방언처리

1. JPA란 Java Persistance API 입니다. ❓ Persistance(영속성)이란? 🔥 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미합니다. 영속성은 파일 시스템, RDBMS 또는 객체 데이터베이스 등을 활용하여 구현합니다. 이를 이해하기 전 먼저 다음의 예를 먼저 살펴봅시다. 컴퓨터에서의 데이터를 읽고 접근할 수 있는 방법에는 휘발성인 RAM과 비 휘발성인 하드 디스크가 있는데 각각의 특징은 다음 그림과 같습니다. 보통 자바 프로그램은 하드디스크에서 DBMS를 이용해 데이터를 기록하고 관리합니다. ❓DBMS란? 데이터베이스 관리 시스템을 의미합니다. ❓JPA란 결국 무엇을 의미하는 것일까? 🔥 자바에 있는 데이터를 영구히 기록할 수 있는 환경(ex. ..

article thumbnail
스프링 이론(JPA) - OOP관점에서의 모델링, 방언 처리

6. JPA는 OOP의 관점에서 모델링을 할 수 있게 합니다.(상속, 컴포지션, 연관관계) 다음과 같이 자바코드로 자동차를 의미하는 Car클래스와 엔진을 의미하는 Engine 클래스가 있습니다. Car 클래스(자동차를 의미) class Car{ int id; String name; String color; } Engine 클래스(엔진을 의미) class Engine{ int id; int power; } ❓Car클래스에서 Engine을 나타내고 싶다면? 🔥 상속이 아닌 결합(콤포지선)을 이용해 나타내야합니다. ❓왜 Car클래스에서 Engine을 상속하면 안되는가? 🚨 만약 상속을 하게 되면 Engine클래스가 부모 클래스가 되고 Car 클래스는 자식 클래스가 됩니다. 즉, 자동차의 부모가 엔진이 되기 때..

article thumbnail
스프링 이론(JPA) - 영속성 컨텍스트

4. JPA는 영속성 컨텍스트를 가지고 있습니다. 이전에 “영속성”에 대한 의미를 알아봤었습니다. 💡 영속성이란? 🔥 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미합니다. ❓ 그럼 컨텍스트란? 🔥 “대상에 대한 모든 정보”를 영구히 저장하는 환경을 의미합니다. ❗ ”컨텍스트를 넘겨준다”라는 의미 🔥 대상에 대한 모든 정보를 넘겨줌으로써 해당 대상의 모든 정보를 알게됨을 의미합니다. 1) 데이터를 생성했을 때, 삭제했을 때(Create, Delete) 다음의 그림을 살펴봅시다. 과정 그림처럼 자바 프로그램에 동물 데이터가 있다고 가정하겠습니다. 1. 자바 프로그램에서 영속성 컨텍스트에게 동물 데이터를 전달합니다. 2. 영속성 컨텍스트는 DB에 동물 데이터를 전달함으로 최..

article thumbnail
스프링 이론(JPA) - ORM, CRUD

2. JPA란 ORM입니다. ❓ ORM이란? 🔥 Object Relational Mapping의 약자로써 객체간의 관계를 매핑(연결)하는 것을 의미합니다. 먼저 모델링의 개념을 알고 넘어갑시다. ❓ 모델링이란? 🔥 추상적인 개념을 현실세계의 개념으로 뽑아내는 것을 의미합니다. 위의 그림처럼 설계도를 바탕으로 건축 모형을 만드는 것을 “모델링한다”라고 합니다. 다음과 같이 DB의 테이블과 자바 프로그램이 있다고 가정하겠습니다. 프로그래밍의 순서 🔥 먼저 1.DB 속 Team의 테이블을 만든 후 2.자바 프로그램에에서 이를 이용하도록 프로그래밍하게 됩니다. ❗ 문제점 자바 프로그램의 데이터 타입과 DB에 있는 자료형 타입이 서로 다르다는 문제가 있습니다. 우리는 위와 같은 방식을 “DB에 있는 데이터를 자바..

article thumbnail
스프링 이론(JPA) - JPA의 개요

1. JPA란 Java Persistance API 입니다. ❓ Persistance(영속성)이란? 🔥 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미합니다. 영속성은 파일 시스템, RDBMS 또는 객체 데이터베이스 등을 활용하여 구현합니다. 이를 이해하기 전 먼저 다음의 예를 먼저 살펴봅시다. 컴퓨터에서의 데이터를 읽고 접근할 수 있는 방법에는 휘발성인 RAM과 비 휘발성인 하드 디스크가 있는데 각각의 특징은 다음 그림과 같습니다. 보통 자바 프로그램은 하드디스크에서 DBMS를 이용해 데이터를 기록하고 관리합니다. ❓DBMS란? 데이터베이스 관리 시스템을 의미합니다. ❓JPA란 결국 무엇을 의미하는 것일까? 🔥 자바에 있는 데이터를 영구히 기록할 수 있는 환경(ex. ..

article thumbnail
스프링(이론) - Ioc 컨테이너, DI, 필터, 메시지 컨버터

1. 스프링은 프레임 워크입니다. ❓ 프레임 워크란? 🔥 Frame Work = Frame(틀) + work(동작한다) = 틀 안에서 동작함을 의미합니다. 2. 스프링은 오픈소스입니다. ❓ 오픈 소스란? 🔥 무료이며 소스코드가 모두 공개된 코드를 의미합니다. 따라서 스프링 부트는 오픈 소스를 뜯어서 내부가 어떻게 생겼는지 열어 볼 수 있습니다. 즉, 이 의미는 사용하다가 나중에 불편한 점들을 직접 뜯어 고쳐 오픈소스에 기여 할 수 있음을 의미합니다. 3. 스프링은 IOC 컨테이너를 가진다. ❓IOC이란? 🔥 제어의 역전을 의미하며 프로그램의 주도권이 스프링에게 있다는 것을 의미합니다. 이를 이해하기 위해서는 자바의 Class, Object,Instance에 대한 개념의 이해가 필요합니다. 위의 예시를 살..