스트링 부트3 자바 백엔드 개발 입문 3~6장

cse 23·2024년 5월 20일
0

3장 - 게시판 만들고 새 글 작성하기

폼 데이터

  • 태그에 실려 전송되는 데이터를 의미
  • 태그에는 데이터를 어디에 어떻게 보낼지도 설정


action : URL연결주소를 적어 페이지로 폼데이터를 보냄
method: 속성값으로 get과 post 2가지 설정가능

DTO (Data Transfer Object)

  • 폼 데이터에 실어 보낸 데이터를 서버의 컨트롤러가 받기 위한 객체

데이터베이스(DB)

  • 데이터를 관리하는 창고 역할

JPA (Java Persistence API)

  • 자바 언어로 DB에 명령을 내리는 도구
  • 데이터를 객체 지향적으로 관리하도록 도와줌

엔티티 (Entity)

  • 자바 객체를 데이터베이스가 이해할 수 있도록 만든 클래스

리포지터리 (Repository)

  • 엔티티가 데이터베이스의 테이블에 저장되고 관리되도록 하는 인터페이스

의존성 주입 (Dependency Injection)

스프링부트는 객체를 만들지 않아도 됌! 알아서 객체 생성하기 때문

@Autowired

  • 필요한 객체를 자동으로 가져오는 기법

SQL (Structured Query Language)

  • 데이터베이스 관리를 위한 언어

주요 SQL 문

  • SELECT: 테이블에서 데이터 조회
  • SELECT 속성명 FROM 테이블명;

H2 DB 접속하기

  • src > main > resources > application.properties에 spring.h2.console.enable=true작성
    -> H2 DB에 웹 콘솔로 접근할수 있도록 허용하는 속성 (실행시 마다 바뀜)
  • 인텔리제이의 run탭에서 ctrl+f한뒤 jdbc검색 -> JDBC H2 DB가 메모리에서 동작하는 주소!

4장 - 롬복과 리팩터링

롬복 (Lombok)

  • 반복되는 필수 코드를 간소화해주는 라이브러리

주요 어노테이션

  • @AllArgsConstructor: 모든 필드를 매개변수로 하는 생성자 자동 생성
  • @ToString: toString() 메서드를 자동으로 생성
  • @Slf4j: 로그 기록을 위한 로깅 도구 (Sample Logging Facade for Java)

로깅

  • 프로그램의 수행 과정을 기록으로 남기는 행위 (마치 자동차 블랙박스)
  • 문제 발생 시 디버깅이나 추적을 용이하게 해줌

리팩터링

  • 기능은 그대로 유지하면서 코드 구조나 성능을 개선
  • 코드 가독성 향상, 유지보수 쉬워짐, 개발 시간 단축

5장 - 데이터 조회 과정

전체 흐름

  1. 사용자가 웹 페이지에서 URL을 통해 데이터 조회 요청
  2. 컨트롤러가 요청을 받아 해당 URL에 필요한 데이터 정보를 리포지터리에 전달
  3. 리포지터리가 DB에 데이터 조회 요청
  4. DB가 데이터를 찾아 엔티티로 반환
  5. 반환된 엔티티는 모델을 통해 뷰 템플릿으로 전달
  6. 뷰 페이지가 완성되어 사용자에게 출력됨

주요 어노테이션 및 메서드

  • @PathVariable: URL 요청에서 값을 추출해 컨트롤러의 매개변수로 전달
  • findById(): 특정 id값으로 데이터를 조회, Optional 타입 반환
  • findAll(): 모든 데이터를 조회, Iterable 타입 반환

머스테치 문법

  • {{#article}}{{/article}}: 뷰에서 article 모델 데이터를 사용할 범위 지정
  • 머스테치 변수가 데이터 묶음일 경우 그 안쪽에 있는 코드를 반복 실행

반환 데이터 타입 불일치 문제 해결

  • 메서드 반환 타입을 사용자 정의 타입으로 캐스팅(형변환)
  • 사용자 정의 타입을 메서드 반환 타입에 맞춤
  • 메서드 반환 타입을 오버라이딩

6장 - 링크와 리다이렉트

링크

  • 사용자가 다른 페이지로 이동하기 위해 미리 정해놓은 요청을 전송
  • HTML의 <a> 또는 <form> 태그로 작성
  • 서버는 클라이언트 요청에 맞는 결과 페이지 응답

예시

<a href="URL_주소">링크 대상</a>

리다이렉트

  • 클라이언트의 요청을 받은 후 다른 URL로 다시 요청을 보내도록 지시
  • 기능을 나누면서도 하나의 흐름처럼 연결 가능
  • 클라이언트는 새 URL로 다시 요청하고, 서버는 그에 대한 응답을 보냄

예시

return "redirect:URL_주소";




0개의 댓글