inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

인프런 워밍업 클럽 3기 백엔드 스터디

언니복이
0

프로젝트에 필요한 상수는 어떻게 관리할까?

스프링 Profile과 application.yml

image.png

No active profile set, falling back to 1 default profile: "default"

image.pngimage.png

 

image.png

 image.png

 

thymeleaf

Validation

타입

 

컬럼명

변경 사항을 추적하기 위함

 

name을 기반으로 github 링크 라던지, 부트스트랩 아이콘를 보여줌

 

experience : experience_detail

project_skill : project skill은 다 대 다 관계로 매핑해주는 테이블

http_interface : 사용자가 요청하는 테이블 확인 할 수 있음

image.png

 

domain

 

presentation : domin이랑 합치면 하나의 독립된 프로젝트로 볼 수 있음

admin

[이론] JPA란

JPA는 ORM(Obeject Relational Mapping) 기술이다.

건물을 짓는 설계도로 건물을 올리게 되면 3D로 나오게 되는 것을 모델링이라고 한다.

모델링 한다는 것은 추상화적인 개념을 현실세계에 구체화하는 것을 말한다.

자바가 가지고 있는 데이터 타입과 데이터베이스가 가지고 있는 데이터 타입은 다르다. class를 통해서 데이터베이스에 있는 테이블을 모델링해야 한다.

원래대로라면, 첫 번째로는 DB 테이블을 만들고 2번째로 자바세상에 모델링한다. ⇒ TRM(Table Relational Mapping)

class Team{
	int id;
	String name;
	String year;
}

하지만, JPA경우 첫 번째로 자바에서 코드를 작성한 것인 클래스를 만들어서 두 번째로 데이터베이스 테이블을 자동으로 생성 수 있다. 이때 필요한 것이 인터페이스이다.

ORM이란?

단점

JPA를 사용하기 위해 꼭 알아야하는 트랜잭션

정의

여러 개의 데이터베이스 작업을 하나로 묶어주는 논리적인 단위

다 같이 안되거나 다 같이 되거나 => 트랜잭션

영속성 컨텍스트

영속성이란

데이터 ⇒ 영구적 저장(파일시스템 X, DB O)

컨텍스트란?(Context)

Context란 대상의 모든 정보를 가지고 있는 것

개발에서 컨텍스트 개념은 조금 애매하다. 이렇게 이해하면 좋다고 한다. 길동이가 영숙이에게 난 영숙이 너의 모든 컨텍스트를 가지고 있어 = 영숙이의 모든 것을 알고 있다.

Context를 넘겨준다. = 보고가 길동이에게 영숙이의 Context(모든 정보)를 넘겨

영속성 컨텍스트란?

image.png

JPA에서 엔티티를 관리하는 임시 메모리, 버퍼와 같은 개념

자바가 데이터베이스를 저장해야 하는 모든 데이터를 아는 것이 영속성 컨텍스트

자바에 있는 동물 데이터를 영속성 컨텍스트에 넣고 나서 DB에도 저장 후 영속성 컨텍스트에서 삭제를 하면 동기화가 되어 있기에 DB에서도 삭제가 된다.

일단 자바는 1. 영속성 컨텍스트에 먼저 요청을 한다. 2. 영속성 컨텍스트에 데이터가 없기에 DB에 요청 한다. 3. DB에서 가져와 자바 object로 영속성 컨텍스트에 저장한다. 4. 자바에 과일데이터를 준다.

일단 자바는 1. 영속성 컨텍스트에 먼저 요청을 한다. 2. 영속성 컨텍스트에 데이터가 없기에 DB에 요청 한다. 3. DB에서 가져와 자바 object로 영속성 컨텍스트에 저장한다. 4. 자바에 과일데이터를 준다.

3.png.webp

데이터 베이스에 있는 데이터를 select해서 가져오고 update하는 등 일련의 모든 정보영속성 컨텍스트를 통해 확인 할 수 있다. 자바가 데이터베이스에 저장해야 하는 모든 메타 데이터 정보들을 영속성 컨텍스트가 가지고 있다.

 

java에서 과일 데이터를 딸기로 바꾸면..

4.png.webp

  1. 영속성 컨텍스트의 과일데이터도 딸기로 바뀌고

  2. 데이터베이스에 commit해서 밀어넣으면 원래 셋은 같은 데이터 인데 3번은 사과로 되어 있어 딸기로 바꾸기위해 update가 자동으로 일어난다.

  3. 데이터베이스 정의

    (위키피디아) 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이다.

    이론적으로 데이터의 집합을 의미한다. 엑셀에 표로 정리된 학생부, 입출금 내역 등도 데이터베이스라고 할 수 있다. 하지만 일반적으로

    웹 개발에서 데이터베이스라고 하면 DBMS를 의미하는 경우가 많다.

    관계를 꼼꼼히 따져보는 것이 좋다 특히 1:1, 1:N, N:M 등의 관계가 중요하다

    대표적인 관계형 DBMS(RDBMS)

    Oracle Database

    오라클 사에서 만든 데이터베이스입니다. 막강한 성능과 안정성이 장점이지만 유료라는 단점이 있다.

    MySQL

    오픈소스로 시작했지만 현재는 오라클 소유

    PostgreSQL

    꾸준히 점유율이 올라가는 오픈소스 데이터베이스

    비관계형 데이터베이스? NoSQL?

    관계형 데이터베이스를 제외한 모든 종류의 데이터베이스를 비관계형 데이터베이스라고 부른다. 키-값형, 문서형 등이 있다.

    대표적인 비관계형 DBMS

    MongoDB

    • 문서형 데이터베이스

    • 데이터를 비정형적으로 저장할 수 있다.

    Redis

    • Key-Value 스토어 데이터베이스

    • 캐시 용도로 주로 사용

 

[이론] HTTP와 REST API

복잡한 비즈니스에서는 모든 기능을 REST를 준수하며 개발하기가 매우 어렵습니다. 가능한 REST 규칙을 따르되, 불가피한 부분에서 개발자

가 참고할 수 있는 팀의 컨벤션을 만들어두는 것이 좋다.

구글 API 디자인 가이드

https://cloud.google.com/apis/design?hl=ko

 

클라이언트에서 서버로 데이터를 전달하는 방법

Query Paratmeter

쿼리 스트링이라고도 부른다. 스프링에서는 컨트롤러에 @RequestParam 어노테이션으로 간편하게 가져올 수 있다.

HTTP Request Body

스프링에서는 컨트롤러에 @RequestBody 어노테이션으로 간편하게 가져올 수 있다.

Path Variable

경로 변수라고도 한다. URL에 접근하고자 하는 자원의 식별자를 표현한다. 스프링에서는 @PathVariable 어노테이션으로 간편하게 가져올 수 있다

[이론] 웹 프레임워크와 Spring

웹 프레임워크

프레임워크? 라이브러리?

프레임워크와 라이브러리를 구분하는 키는 ‘제어의 주도권’

비유하면 프레임워크 DIY 가구 키트라고 할 수 있다. 라이브러리는 가구를 만들기 위한 망치와 같은 공구, 또는 그런 공구들을 모아둔 공구 상자라 할 수 있습니다. 사용자가 주도권을 가지고 원하는 것을 만들 수 있다.

물론 가구 키트를 만들며 망치를 사용할 수 있듯이, 프레임워크 안에서도 라이브러리를 사용할 수 있다.

Spring Framework

Java 기반의 웹 프레임워크이다.

MVC 패턴(Model-View-Controller)

image.png

레이어드 아키텍처(Controller-Service-Repository)

image.png

스프링 Bean과 의존성 주입(Dependency Injection)

image.png

제어의 역전(Inversion of Control), 줄여서 IoC이란?

스프링 Bean으로 지정된 클래스는 개발자가 직접 인스턴스를 생성, 관리하지 않고 스프링 컨테이너가 주체가 됨

의존성 주입이란?

IoC(역전의 제어) ⇒ 주로 주도권 스프링

객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미

컴포넌트 의존관계 설정(Component dependency resoulution), 설정(Configuration) 및 생명주기(LifeCycle)을 해결하기 위한 디자인 패턴(Design Pattern)이다.

(++ 추가)

IoC 컨테이너

컨테이너?란 컨테이너는 보통 객체의 생명주기를 관리, 생성된 인스턴스들에게 추가적인 기능을 제공하도록 하는 것

스프링 프레임워크도 객체를 생성하고 관리하고 책임지고 의존성을 관리해주는 컨테이너가 있는데,그것이 바로 IoC 컨테이너(=스프링 컨테이너)

인스턴스 생성부터 소멸까지의 인스턴스 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해주기 때문에 객체 관리 주체가 프레임워크(Container)가 되기 때문에 개발자는 로직에 집중할 수 있다는 장점이 있다.

POJO(Plain Old Java Object)란? 주로 특정 자바 모델이나 기능, 프레임워크를 따르지 않는 Java Object를 지칭한다. Java Bean 객체가 대표적이다. 간단하게 getter / setter를 생각하면 될 것 같다.

 

생성자 주입 권장

[이론] 웹 서비스를 구성하는 요소

image.png

  1. 클라이언트

  1. 서버

3. 데이터베이스

브라우저를 주소창에 입력하면 어떤일이 일어날까?

image.png

 

 

백엔드 인프런강의 백엔드 코틀린 나만의포폴사이트

답변 0