본문 바로가기

development

23.01.23 스프링부트 스터디

스프링부트 관련 강의를 보고, 서로 질문해보고 어느정도 아는것은 답변하고 찾아보는 스터디를 진행하기로 했다

1. 스프링과 스프링부트 차이
 -  독립형 spring 어필리케이션 생성

 - 스프링부트 쓰면 버전관리가 편하다

 - 디펜던시 자동화!

 

2. build.gradle은 무엇이며 어떠한 역할을 하는가?

 - 빌드 배포 도구
 - 메서드와 프로퍼티를 모아둔것

 - 프로젝트의 설정 파일

 

3.CrudRepository인터페이스는 Repository인터페이스를 상속받아 사용하는데 Repository인터페이스를 보면 아무런 메서드가 선언되어 있지 않는다. 그렇다면 CrudRepository는 어떤 원리로 Repository를 상속받아 사용하는 것인가?(CrudRepository의 동작 원리)

 - 인터페이스만으로 동작..하는데 어떻게..?

 - crudRepository인터페이스란? -데이터를 다루기위해 필요한 일련의 동작들을 모아서 레포지토리로만들어놨다

 - 추가검색필요

 

4. Spring Web, H2 Database, Mustache, Spring Data JPA 역할과 정의

 - H2데이터베이스는 테스트용으로사용

 - spring data jpa는 자바언어를 데이터베이스가 이해하도록

 - mustache는 html페이지를 변수를이용해 구현할수있도록 하는 문법

 -멀티 파트 파일 업로드, 서블릿 리스너 등 웹 지향 통합 기능을 제공한다. HTTP클라이언트와 Spring의 원격 지원을 위한 웹 관련 부분을 제공

 

5. post방식과 get방식의 차이점

 -get은 서버 데이터를 요청할때 이미 있는페이지는 get

 -post는 페이지를 새로생성하거나 업데이트할 때

 html에서 딜리트 패치를 지원안한다. 그래서 머스태치에서도 사용못함

 -머스테치에서 delet하려면 get으로 해야된다.

 

6. mysql orcla postgres란 = 데이터베이스의 종류다. 바꿀때마다 공부해야되는데..? 스프링부트쓰면 굳이..? jpa를쓰니까

  -mysql은 개인이 많이쓰고

 -oracl은 기업에서많이쓴다. 

 -postgres?

스프링에서쓸때는 각데이터베이스에 맞는 쿼리문써야되는데 스프링부트에서는 굳이..?

 

7@Entity와 @Column @AutoWired의 역할과 정의

 -@Entity  - 자료주고 받는 객체, Entity 내부에 Column이 있음

 -@Column  - 테이블을 이루는 요소, 데이터의 종류를 추가

 -@AutoWired  스프링 부트가 미리 생성해놓은 객체를 가져다가 자동 연결 -의존성 주입과 연관되있다

   -생성포인트는 스프링부트만알고있는 생성하는곳에 해준다. 우린모름

 

8 Lombok의 장단점 및 주의사항

 -장점 어노테이션만 하면 게터 세터 생성자 등 안쓰고 자동생성해줌 -> 

 -단점 ? 눈에보이는거 선호하는분은 별로안좋아한다..?

 -

 

9 프로젝트 실행시 한글 깨지는 이유 / (form에서 한글 데이터 받아올때)?

 - 그래들 버전.. 2.7버전 말고 2.6.x버전 쓰거나

 -server.servlet.encoding.force=true 코드를 어플리케이션 프로퍼티에 추가

 

10 DTO란?  VO와의 차이?

 

 

 

entity로 하게되면 뭐가 문제가 되나? 책임이 다르게 된다.

 

11.왜 jpa를 사용하는 것이고, 장단점은 무엇인가요?

  -쿼리문없이 데이터베이스 사용가능?

  - 데이터받을때 원래는 반환타입설정해야되는데 오버라이딩해서 형만 변형해도 쓸수있다 

단점

 -다른사람이 만든 구조를 외워서 써야되서 조금 어렵다

 -데이터가 작을떄는 괜찮은데 데이터가 커지면..?

 -쿼리처리 복잡한거 할때는 성능적으로 한정적이고 큰부하가 걸릴수있다

대안

 - jpa를 안쓰고 데이터베이스 따로 쓴다..?

 - 벤더독립성 (ORM표준 검색)

 

 

 

12 리펙토링이란 무엇이고 어떤 상황에서 쓰는가요?

 - 결과의 변경 없이 코드 구조 재조정

 - 유지보수 편하게 중복된거 묶어서 단순화, 코드의 성능향상에 도움을 준다

 - 마틴파울러가 성능향상이 들어가면 리펙토링이 아니다..라고 했다

 

13 MVC패턴 말고 다른 패턴들이 있다면?

  - 일단 mvc패턴이 어떤개념이고 왜쓰는지부터

 mvc 구현젤편하지만.. 뷰에서 뭐하나고치면 모델넣어주고 컨트롤러 넣어주고

다른 모델들은 그런 의존성을 줄여준다. 최대한 독립적으로 움직일수있도록.

단점은 설계가 복잡하다.

결론 mvc가 구현이 쉽지만 의존성이 좀 있다.  협업할때힘듬 항상터짐

이걸알고있으면 협업할때 변수에대한 정의를 확실하게 하자

 

  - mvc가 웹말고 안드로이드로가면 골치아파짐

  - MVP, mvvm, mvi 등등...다른패턴들..

 

 

etc 추가타임
@Controller 의 리턴 타입 return 에는 정확히 어떤 것을 보내줘야하나?
redirect, 주소, 그리고 어떤 것을 보내줄 수 있나?

왠만하면 all, no 얼규컨스트럭터 같이써라? 디폴트생성자 생각해보면 이해간다
//setter 무분별하게 쓰지마라?