본문 바로가기

Weekly I Learnd

[W.I.L] Spring 공부 시작(항해99 4주차 주특기)

1. 4주차 일정

내 주특기: Spring

기간 : 21/03/19~21/03/25

내용 : 스프링에 관련된 기본적인 내용들을 금,토 2일동안 공부하고 공부한 내용들을 활용하여 작업물을 만들어보기

제출기한 : 25일(목) 자정까지

 

2. 배운 것 

[자바 기본 문법]

변수

  • 변수 : 값을 담는 상자
  • 변수를 선언 : (자료의 종류) (변수명) = (값)
  • 변수명은 일반적으로 1)영어, 2)소문자 시작, 3)구분은 대문자
  • 자바는 항상 제일 마지막에 세미콜론(;)을 넣습니다.

숫자

  • int - 정수(-1, 0, 1, 2, 3, 4 ...)
  • float - 소수점 포함(1.0, 2.4, -3.78, ...)
  • Long - 정수 범위가 훨씬 넓은 녀석, 그것 빼고는 int와 같음
  • 문자열은 대문자로 시작 : String =""

참거짓 타입 : boolean

 

배열 - List

 

  • 순서가 중요
  • 같은 자료형만 넣을 수 있다
  • 넣을 때는 add, 조회할 때는 get, 제거할 때는 remove

[코드 기본구조]

 

반복문 기본 구조

for (시작조건; 계속하는조건; 더하기) { 명령 }

 

메소드 기본 구조

public (반환타입) 메소드명(파라미터) {

     // 명령 내용

return (반환값) }

<스프링의 구조>

-3가지 영역-

  • Controller : 가장 바깥 부분, 요청/응답을 처리함
  • Service : 중간 부분, 실제 중요한 작동이 많이 일어나는 부분
  • Repo(Repository, Entity) : 가장 안쪽 부분, DB와 맞닿아 있음.

 RestController: 서버응답이 JSON형식임을 알려줌

 

REST란?

주소에 명사, 요청 방식에 동사를 사용함으로써 의도를 명확히 드러냄을 의미

  • HTML, CSS 등을 주고받을 때는 붙이지 않는다
  • Controller : 클라이언트의 요청(Request)을 전달받는 코드

 

Gradle이란?

다른 사람들이 만들어둔 도구 내려받는 것

 

프로그래밍 언어별 종류

  • Javascript - NPM
  • Python - pip
  • Java - mavenCentral, jcenter

CRUD란?

정보관리의 기본 기능 

생성 (Create) → 조회 (Read) → 변경 (Update) → 삭제 (Delete)

 

[데이터의 흐름 배우기]

1. 데이터 베이스

 

 

 

RDBMS(Relational DataBase Management System) : 관계형 데이터 베이스로 컴퓨터에 정보를 저장하고 관리하는 기술(정보저장소)

 

RDBMS의 종류

  • MySQL
  • PostgreSQL
  • Oracle Database

우리가 사용한 DB는 h2

H2(In-memory DB의 대표) : RDBMS의 한 종류로, 서버가 켜져있는 동안에만 작동하는 RDB(데이터 베이스)

서버와 SQL로 소통함

 

2. 데이터베이스와 서버

 

 

 

 

 

SQL(Structured Query Language) : 데이터를 읽고, 저장하고, 변경하고, 삭제하는 구체적인 문법

스프링은 자바로 작동하고, 데이터베이스는 SQL로 작동

Spring Data JPA: 둘 사이 소통을 원활하게 하기 위한 것

 

Repository의 역할 : DB관리(연결,해제, 지원관리)

 

JPA란?

Java Persistance Api로 SQL을 사용하지 않고 데이터를 생성, 조회, 수정, 삭제할 수 있도록 도와주는 번역기

JPA를 작동시키는 매개체 : repository

 

3.클라이언트와 서버

 

 

 

Spring은 데이터를 주고 받는 방법이 정해져 있음

현업에서 데이터를 주고 받을때 반드시 Dto를 사용한다.

 

Controller의 역할 : 
1.클라이언트의 요청을 받음
2.요청에 대한 처리는 서비스에게 전담
3.클라이언트에게 응답

 

Service의 역할 : 비즈니스 로직 처리

 

Dto란?

Date Transfer Object나 VO(Value Object) 라고 불리며 계층간 데이터를 교환하기 위한 자바빈즈(Java Beans)입니다.

 

 

API란?

API (Application Programming Interface) : 클라이언트 - 서버 간의 약속 / 애플리케이션 소프트웨어를 구축하고 통합하기 위한 정의 및 프로토콜 세트

 

 

[툴로 클라이언트와의 테스트 및 서버 기능 확인 하는 방법]

ARC(Advanced REST Client) 를 사용하면  post, read, update, delete를 바로 확인해볼 수 있다

[개념 정리]

  • import : 미리 작성된 코드 가져오기 
  • extends : 클래스를 상속 한다()
  • boolean : 특정 경우일 때 명령을 내리는 문법 
  • class:정보를 묶는 것 / 현실과 비슷한 개념(객체)을 나타내기 위한 자바의 도구
  • Lombok : 개발자가 코드를 직접 작성하지 않고 스프링이 대신 작성하게 해주는 것
  • 멤버변수 : 클래스 내 정보
  • class : 빵틀 / 변수 : 빵
  • getter : 정보를 가져오는 메소드
// Getter
public String getTitle() {
    return this.title;
}
  • Setter : 정보를 바꾸는 메소드
// Setter
public void setTitle(String title) {
    this.title = title;
}

 

[annotation(@) ]

@Optional : return이 있을때 값이 있으면 리턴을 하고 없을때는 하지 않겠다.

@GetMapping : 브라우저에서 주소를 치는 행위를 GET 방식으로 정보를 요청

@Controller: 프레젠테이션 레이어, 웹 어플리케이션에서 웹 요청과 응답을 처리하는 클래스에 사용

@Service:비즈니스 로직을 가진 클래스에 사용

@RestController : JSON으로 응답함을 선언

@Autowired:각 상황의 타입에 맞는 IoC 컨테이너 안에 존재하는 Bean을 자동으로 주입

@Column: 데이터의 행과 열중에 '열'을 만든다

@NoArgsConstructor: 파라미터가 없는 기본생성자를 만든다

@CreatedDate : 최초 생성 시점

@LastModifiedDate : 마지막 변경 시점

[단축키]

import 단축키

  • 윈도우: Alt + Enter
  • 맥: Option + Enter

주석 단축키

  • 윈도우: Ctrl + /
  • 맥: Cmd + /

 

 

💻느낀점

처음에 데이터의 흐름을 배울때는 Repository, Controller, Service가 어떤 역할을 하는지 전혀 감이 오지 않았다. 그래서 너무 답답하고 언제 강의 내용을 소화해서 사이트를 만들고 제출하나 하는 생각도 들었다. 하지만 나의 사이트를 기한안에 꼭 만들어서 제출하고 싶은 마음이 컸고 배운 것들로 직접 구현을 하여 시행착오를 겪어볼 수 있는 기회였지 때문에 놓을 수 없었다

그래서 사이트라도 만들면서 익히자 하는 마음으로 코드를 먼저 짜기 시작했다. Repository, Controller, Service가 어떻게 돌아가는지 정확히는 이해를 못하고 있었기 때문에 강의를 보면서 내가 구현하려는 것은 코드를 어떻게 짜야하고 서버와 클라이언트를 어떻게 연결 시켜야 하며 원리는 왜 그런지 다시 이해하고 찾아보고 적용하며 시행착오를 겪어 문제를 하나씩 해결해 나갔다. 시도한 여러 방법들 중에서 다른 사람이랑 문제를 공유하면서 다른 사람이 어떤 우선순위로 문제를 해결하려고 하는지를 보는 방식도 많은 도움이 되었다. 

마지막까지 놓지 않고 끝까지 붙잡고 있어서 결국에는 마감 기한보다 5시간 일찍 제출 할 수 있었다. 처음 스프링을 접하는데 난관이 많았는데 팀원들에게 많은 도움을 받았다. 이번 팀원들이 없었다면 정말 힘들었을것 같다. 어벤져스 팀원들ㅎㅎ 애정합니다~!!

[이번주에 공부한 것]

 

Javascript 기초

[변수] let a = 3; // 변수를 처음 선언할 때 let을 쓴다. 자료형은 안써도 됨 let b = 2; console.log(a + b); // System.out.println()과 같다 b = 7; console.log(a + b); [자료형] 문자 let name = 'bknam'; l..

leaphigher20.tistory.com

 

JQUERY 코드 공부

JQUERY란? 미리 작성된 자바스크립트 함수 모음집( HTML, CSS 조작 함수를 미리 만들어서 제공해주는 것) https://www.w3schools.com/jquery/jquery_get_started.asp // jQuery 임포트 코드 나타내기 $('#원하는 H..

leaphigher20.tistory.com

 

<Java> 기초 문법 공부 1

[변수 : 데이터 자료를 임시로 담을 수 있는 박스 (메모리 공간)] int자료형은 메모리에서 4byte공간을 차지함(8bit = 1byte)  int  a = 8; int a ; //변수선언(자료형(int)과 변수이름(a)) a = 18; //변수 초..

leaphigher20.tistory.com

<Java> 기초 문법 공부 2

[객체 지향 프로그래밍(Object-Oriented Programming/OOP)] 객체 : 프로그래밍에서 속성과 기능을 가지는 프로그램 단위 ex) 날씨 프로그램: 속성:온도,미세먼지 기능:날씨예보, 사칙연산 프로그램: 속성 : +

leaphigher20.tistory.com


[내가 만든 결과물]

 

hello world

daom.shop