스프링부트 - 개념 및 페이지 작성

Wald Eisen·2023년 7월 17일

study

목록 보기
14/26
post-thumbnail


간단하게 어떻게 작동하는거지?

1. 우선 regions의 entity, repository를 보자.

entity는 db의 구조 매칭, repository는 생성된 db에의 접근을 담당한다.


@Entity: 엔티티엔 Entity 어노테이션을 써 명시해준다.
@Table(name=""): 이걸로 연결하고자 하는 테이블을 연결한다. 테이블이 아닌 데이터베이스의 연결은 프로퍼티(yml)쪽에서 제어하니 참고.
@Getter: 게터가 무엇을 뜻하는건진 자바 어노테이션을 참조. 대충 다른값을 가져와야하니 게터를 쓴다.
@No,AllArgsConstructor: 생성자를 만들기 위함.
@Setter: Entity 클래스에서는 Setter 메소드 대신 @Builder를 통해 제공되는 빌더 클래스를 사용하도록 한다.

저 위의 사진에서 작성된것들은 DB의 테이블과 매칭될 클래스들이다.

JPA를 사용할 경우, 바로 이 Entity 클래스의 수정을 통해 DB 데이터에 작업한다.

그럼 jpa는 무엇일까?


1.1 그리고 이것이 repository이다,

리포지토리는 대충 DB와 연결, 그리고 데이터 처리다.

JPA 라는 외부 메서드가 GET, POST, DELETE 등등의
거의 모든 작용을 대신하고, DB와의 연결을 담당하기에 제법 중요하다.

특히 아래에선 sql에서의 쿼리문, 즉 db의 데이터를 select * from.. 같이 찾는 과정을
여기에서 각각 메서드를 생성해서 하는 것과 비슷한 일을 하게 했다

갑자기 왠 인터페이스? 라 할수도 있지만, JPA자체가 외부에서 가져온 애드온이 DB연결같은 것들을 처리해주시는 중이기에 인터페이스 형식을 따른다.

2. CONTROLLER , DTO, SERVICE

  • 컨트롤러: 요청을 받고 그걸 처리하는 작업을 해달라고 서비스에게 넘긴다 그리고 받으면 그걸 다시 보낸다.

  • DTO: 그 사이에서 데이터를 필요한것만 남긴다.

  • 서비스: 요청작업수행, 컨트롤러가 화면에 DB 내역을 띄우기 위해 쓸 DB목록 가져오기, 삭제 수정등등.

2.1 Controller와 DTO

컨트롤러가 무엇이라 했지? "요청을 받는" 쪽이라 했다.

이말인 즉, 만약 회사직원의 부서만 보게 하는 웹페이지를 열었는데 이용자가 직원의 부모님 여부나 나이, 거주지같은 민감한 정보들도 보게 할수는 없는 법이다.

그렇기에 컨트롤러 자체는 데이터에
Entity(데이터),Repository(JPA) -> DTO(가공)

된 데이터인 DTO 자체로만 접근한다.

DTO에서 가공된 데이터.

대충 Id와 이름을 가져오고, 다시 그걸 new로 리턴하여 덮어 씌워버렸다.


컨트롤러는 이제 이 DTO를 기반으로 작동한다.

대충 @Autowired로 서비스에 연결한 뒤
저 아래에서 서비스 파일의 getMainPageData메서드의 결과값을 들고온다.

그리곤
ModelAndView라는 화면 출력용 메서드를 호출해서는,
ResMainDTO 로 가공된 데이터 리스트를 가져온다.

2.2 Service

Entity는 서비스에서 빠져나가지 못한다.

서비스는 "작업의 처리"를 담당한다.
컨트롤러가 이용자에게 사람 목록을 보여주기 위해선
우선 DB에서 그걸 쭉 가져오는 과정을 거친다.
그걸 해주는게 서비스다.

화면의 출력에 한한 작동방식

대충 컨트롤러가 호출하고, 서비스가 데이터를 가져왔다면.. 컨트롤러는 다시 그걸 DTO로 보낸 뒤 필요없는 부분을 가공해서 modelandview 메서드로 그걸 보여준다.


디자인 제작

  • 정적 html 제작,
  • 화면에 맞춰 DB설계

====================
스프링 부트 세팅

  • 화면에 맞춰 CONTROLLER
  • 테이블에 맞춰서 ENTITY
  • service로 화면에 필요한 작업 및 데이터 생성

만들어보자.

프로젝트이름: site1
디펜던시 기본3종

  • web,
  • 타임리프,
  • 마리아,
  • jpa

controller로 html 연결하기
entity 만들기
repository 만들기
service 만들기
dto 만들기 (idx, id)만 가져오기
controller로 데이터 넘기기


domain은 컨트롤러를 받는다, 즉 화면,
regions는 데이터베이스 그 자제다, repository는 db랑 연결하는 부분
entity는 regions의 테이블.

1) 타입 리프

우선 타입 리프를 코드에 적자.
타임리프는 문서 최상단에 다음과 같은 코드를 넣어서 사용할 수 있다.

<html xmlns:th="http://www.thymeleaf.org">

타입 리프를 사용한다면 특정 요소를 for문처럼 반복하는
th:each가 같은 반복문을 태그에 넣을 수 있다.

2) DB 연동


단계별로 해보자.



엔티티 함수명을 입력한다. 'postentity'

제네릭엔 기본형태 변수, 즉 int가 들어가지 않는다.




이제 컨트롤러에 연결을 시키자, 다시 컨트롤러로 간다.

3) 데이터를 가져와보기

repositoty에 새파일.
얘가 이전에 db연동에서 생성한 엔티티 클래스를 가져올것이다. 인터페이스.

2개의 댓글

comment-user-thumbnail
2023년 7월 17일

잘봤습니다. 좋은 글 감사합니다.

답글 달기
comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

답글 달기