TIL

58일차 (spring1 실습)

haedal-uni 2021. 11. 9. 23:24
728x90

IntelliJ 실행하기

* 코드 새로 작성하면 재시작하기!!

 

 

python venv처럼 setting하는 것이다.

ex) dependency에 MySQL Driver를 import 하면 프로젝트에서 mysql 사용 가능하다.

👉🏻 spring의 dependency가 python의 interpreter라고 보면 된다.

 

 

이 설정들은 어디에서 볼까?

👉🏻 build.gradle에 들어있다.

 

 

IntelliJ 실행 후 log를 확인한다.

Tomcat started on port(s): 8080 (http) with context path ''

path'' 👉🏻 기본 포트

 

 

동작했으니 확인한다.

http://localhost:8080 주소로 접속한다. 👉🏻 스프링 작동을 완료했다.

 

 

폴더 구조를 확인한다.

/src # 최상위
  - /main # 실제 프로젝트에 포함된 부분
    - /java # 자바 파일이 위치
      - /com
        - /sparta
          - /item01
					  - Item01Application.java # 메인 파일
    - /resources # 설정파일, 스태틱 파일
		  - application.properties # 메인 설정 파일
      - /static # 스태틱 파일(image, javascript, css, html ...)
      - /templates # html 파일
  - /test # 테스트에 필요한 부분
	  - /java
      - /com
        - /sparta
          - /item01 #테스트 관련 자바 파일

 

resource가 html, css, js를 넣는 폴더

resources/static에서 static은 aws 정적 웹 호스팅에서 나온 static이라고 생각하면 된다.

 

 

Annotation _ 편하고 유연하게 사용 : 특정한 기능을 하는 것

@Interface를 ctrl + 클릭 해보면 인터페이스 처럼 설계되어 있는 것을 볼 수 있다.

 

 

 

 

JAVA Class

클래스만 보는게 아니라 객체 지향을 본다.

 

객체 지향이란 객체가 각각의 역할과 책임이 있고 메세지로 상호작용해서 협력해 나가는 것이다.

 

처리할 수 있는 메세지들, 어떤 동작들 .. 그런 것들을 모아서 인터페이스가 된다. 

인터페이스를 쓰는 이유는? 다형성 때문이다.

 

이 전에 다형성이 무엇인지에 대해 이해한 것을 적었다.  ( 2021.11.07 - [spartacodingclub/WIL] - 8주차 )

팀원분과 다형성이 무엇인지에 대해 의견이 달라서 튜터님께 맞게 이해한 것인지 질문을 드렸더니

다형성을 왜 쓰는지 예시를 통해 아는게 더 중요하다고 하셨다.

👉🏻 다형성을 쓸때와 안쓸때는 코드적으로 어떤 차이가 생기는지 이해해보는게 중요하다!

 

<[OOP] 다형성(Polymorphism)이란?>, https://steady-coding.tistory.com/446

 

 

 

 

 

Layered Architecture

 

출처 : <[Java] DAO, DTO, Repository을 이해하자>, https://azderica.github.io/00-java-repositorys/

 

사용자에게 Controller가 요청을 받으면 service를 호출하고 service에서 처리한다.

db가 필요하면 Repository에 요청을 해서 db를 가져와서 client에게 view를 통해 보내준다.

 

Controller : 사용자가 주는 파라미터 값을 변수로 저장하고 서비스단에 넘기기

                사용자 요청 실패하면 에러메세지를 띄우는 역할

Service : 사용자의 요청을 실질적으로 처리

Repository : db에 data를 가져오고 사용하는 중개자 (CRUD 사용 가능)

                ex. Select ~ from ~, insert, update

 

 

DTO는 용도에 따라서 건드리는 얘

 

 

 

🤔❓ IntelliJ에서 Layer Architecture를 구분하는 것은 package인 건가?

어떻게 보면 package로 구분하는 것처럼 보일 수 있다.

사실은 class로 구분을 하는데 class가 많아져서 package안에 class를 넣어 관리를 하다보니

package로 구분하는 것처럼 보인다.

 

 

 

 

Getter/Setter

Lombok 이용

https://mangkyu.tistory.com/78

 

 

 

 

 

Gradle

 

디펜더시 추가하기 (참고) 

https://mvnrepository.com/artifact/org.json/json

 

Json In Java 코드는 build.gradle에 dependencies 에 넣는다.

 

 

코끼리 그림을 클릭하고 gradle build를 더블클릭하면 왼쪽 탭에 build라는 폴더가 생성된다.

 

 

 

 

 

RDBMS

데이터를 create.

그 데이터는 파일이 될 수도 있고 DB가 될 수 있다.

DB 중 RDBMS, 그 중에서 H2를 사용한다.

H2를 선택한 이유 매우 빠른 오픈 소스이기 때문이다.

( In-memory DB인 H2.

인메모리 DB란 서버가 작동하는 동안에만 내용을 저장하고,

서버가 작동을 멈추면 데이터가 모두 삭제되는 데이터베이스를 말한다. )

 

 

H2 웹콘솔 설정 👉🏻 application.properties 파일에 넣어준다.

스프링 부트 실행하기 👉🏻 프로젝트명Application

H2 실행되는지 test 하기 👉🏻 http://localhost:8080/h2-console

 

 

 

 

 

 

JPA 시작

JPA는 SQL을 쓰지 않고 데이터를 생성, 조회, 수정, 삭제할 수 있도록 해주는 번역기

( 테이블 구조로 쓸 수 있게 )

 

전체 코드가 Domain이고, DTO는 용도에 따라서 건드리는 얘

( Domain != DTO )

 

application.properties 👉🏻 세팅 정리 

 

 

 

Interface란?

JPA는 Repository를 통해서만 사용할 수 있다

인터페이스는 클래스에서 멤버가 빠진, 메소드 모음집이라고 보면 된다.

 

[OOP] 다형성(Polymorphism)이란? , https://steady-coding.tistory.com/446

 

 

 

상속

"이미 만들어둔거 가져다 쓰자!"

부모의 메소드랑, 멤버변수를 상속받을 수 있고 오버라이딩을 해서 재 정의 해서 쓸수 있다.
그리고 부모형의 변수로 자식객체를 생성할 수 있다 

 

(멤버 함수= 메소드)

 

* 부모클래스의 메소드를 자식클래스가 동일한 형태로 또다시 구현하는 행위를 

  메소드 오버라이딩(Method Overriding)이라고 한다. (※ 메소드 덮어쓰기)

 

 

* 상속을 위한 기본조건

  - 상속 관계에 있는 두 클래스 사이에는 IS - A 관계가 성립해야한다.

 

    < 상속 조건 및 특징 >, https://codedragon.tistory.com/3975

 

 

 

 

 

 

JPA 심화

Create는 http 메소드 어디에 매핑이 될까?

Create 👉🏻 POST

Read 👉🏻 GET

Update 👉🏻 PUT

Delete 👉🏻 DELETE

 

 

* Spring 실습을 하면서 Github에 코드와 정리를 같이 하고 있는데 JPA 심화 부분에서

새로 알게 된 사실들이 많아 Github Readme.md에 정리했다.

 

다른 부분들은 최소한의 정보+오류 해결한 방법에 대해서만 담고 있는데

05_JPA 심화 부분은 로그 보는 연습을 하면서 정리한 부분들이 많아 링크 첨부로 대신한다😆       

 

 

 

 

 

어제 새벽까지 실습하다가 3시간만 자고 다시 수업들어야해서 졸려 죽을뻔했다...🥱

전체적으로 총 정리하는 느낌으로 진행하고 진도를 안나가서 그런지 잘 따라간 느낌이 들었다.

그리고 실습하면서 느낀건데 실강할 때 진도가 빨라서 못 쫓아가는 줄 알았는데

그냥 말이 빠르셔서 내가 잘 못듣는 거였다. 

팀원분들도 못알아듣는다고 하는데 어떻게 잘 따라가는거지.. 🤔

728x90

'TIL' 카테고리의 다른 글

60일차  (0) 2021.11.12
59일차_Bean, IoC, DI  (0) 2021.11.10
57일차  (0) 2021.11.08
54일차  (0) 2021.11.06
53일차(미완)  (1) 2021.11.04