스프링부트 관련 강의를 보고, 서로 질문해보고 어느정도 아는것은 답변하고 찾아보는 스터디를 진행하기로 했다
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 무분별하게 쓰지마라?