JPA 37

Spring Boot으로 웹 출시까지 #11. JPA로 조회방법(FetchType) 설정하기

서로 연관된 두 테이블간의 조회방법 설정 EAGER LAZY N + 1 문제 및 해결방법 알아보기 User Controller에서 Fetch Type을 알아보자. User Controller package com.example.myhome.model; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity @Data public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;..

Spring/SpringBoot 2022.06.04

Spring Boot으로 웹 출시까지 #10. JPA를 이용하여 @OneToMany 관계 설정하기

Board Class에 User 정보를 넣어주자. 게시글 입장에서 사용자는 다대일 관계 사용자 입장에서는 게시글과 일대다 관계 참고 https://zetawiki.com/wiki/MySQL_%ED%85%8C%EC%9D%B4%EB%B8%94_%EC%BB%AC%EB%9F%BC_%EC%B6%94%EA%B0%80 MySQL 테이블 컬럼 추가 - 제타위키 다음 문자열 포함... zetawiki.com board 테이블에 user_id 컬럼을 만들고 user_id 컬럼을 user의 id 컬럼을 참조하여 외래키로 만들어준다. MySQL [mydb]> ALTER TABLE board ADD user_id BIGINT(20); Query OK, 0 rows affected, 1 warning (0.028 sec) Rec..

Spring/SpringBoot 2022.06.04

Spring Boot으로 웹 출시까지 #8. JPA를 이용한 페이지 처리 및 검색

bootstrap를 이용해서 page-overview를 확인하는 ui를 변경해주자. JPA를 이용해서 페이지를 가져오는 작업을 PagingAndSortingRepositorty interface를 검색해서 참고한다. BoardController을 아래와 같이 해준다. @GetMapping("/list") public String list(Model model) { Page boards = boardRepository.findAll(PageRequest.of(1, 20)); model.addAttribute("boards", boards); return "board/list"; } pageable도 이용해서 코드를 작성해주자. @GetMapping("/list") public String list(Mod..

Spring/SpringBoot 2022.06.02

Spring Boot으로 웹 출시까지 #7. JPA이용한 RESTful API 작성

참고 사이트에서 REST 서비스를 Spring을 이용해서 다뤄보자. JPA를 이용해서 mariaDB의 데이터 조작할 수 있는 컨트롤러 생성 PostMan을 이용해서 http요청을 통해 CRUD 데이터 조작하기 참고 사이트 아래의 HTTP is the Platform을 사용해보자. package payroll; import java.util.List; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springfr..

Spring/SpringBoot 2022.06.02

Spring Boot으로 웹 출시 - thymeleaf에서 form 전송

Spring Boot, thymeleaf를 이용해서 form 전송 방법 알아보기 form 유효값 체크할 수 있는 Validator 작성하기 JPA를 이용해서 DB에 데이터 추가, 수정 Bootstrap으로 form 검색하고 form.html파일을 만들어준다. form.html 게시판 제목 제목 에러 메시지 내용 제목 에러 메시지 취소 삭제 확인 list.html은 아래와 같다. 게시판 총 건수 : 검색 검색 번호 제목 작성자 Mark Otto 홍길동 Previous 1 Next 쓰기 이제 form.html과 controller을 연결시켜주자. package com.example.myhome.controller; import com.example.myhome.model.Board; import com.ex..

Spring/SpringBoot 2022.06.02

Spring Boot으로 웹 출시까지 #5. jpa를 이용해 게시판 조회하기

프로젝트 들어가기 전에 블로그들 참고하기 MariaDB 설치 및 테이블 생성 Spring Boot에서 MariaDB 데이터소스 설정 Model, Repository 클래스 생성 및 어노테이션 설정 / 게시판 데이터 조회 후 화면에 출력 mac에서 mariadb 참고 https://wonpaper.tistory.com/399 [MySQL] Mac 에서 mariaDB 설치하기 맥에서 mariaDB 를 설치해본다. 맥전용 설치 파일이 없어서, 약간 귀찮은 과정을 거쳐야한다. Homebrew 으로 mariaDB 를 실제 설치하는 방식이다. 1. X-Code 설치 - Homebrew 를 설치가능하도록 해준다. : 터미 wonpaper.tistory.com https://mariadb.com/kb/en/instal..

Spring/SpringBoot 2022.05.31

Mapped Superclass - 매핑 정보 상속 / 상속관계 매핑

BaseEntity 클래스를 만들어보자. 추상클래스로 쓰자. @MappedSuperclass public abstract class BaseEntity { package hellojpa; import javax.persistence.MappedSuperclass; import java.time.LocalDateTime; @MappedSuperclass public class BaseEntity { private String createdBy; private LocalDateTime createdDate; private String lastModifiedBy; private LocalDateTime lastModifiedDate; public String getCreatedBy() { return crea..

Spring/JPA 2022.05.28

실전 예제 3 - 다양한 연관관계 매핑

배송, 카테고리 추가 - 엔티티와 ERD를 보자. Delivery 및 Category Class를 만들어주자. package jpabook.jpashop.domain; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Delivery { @Id @GeneratedValue private Long id; private String city; private String street; private String zipcode; private DeliveryStatus status; } Order와 Delivery의 관계를 1대1로 잡아준다...

Spring/JPA 2022.05.25

일대일 1:1 / 다대다 N:M

일대일 관계 일대일 관계는 반대도 일대일이다. 주 테이블이나 대상 테이블 중에 외래 키 선택 가능 주 테이블에 왜래 키 대상 테이블에 외래 키 외래 키에 DB 유니크(UNI) 제약조건 추가 다대일(@ManyToOne) 단방향 매핑과 유사하다. Locker를 만들어주자. package hellojpa; import javax.persistence.GeneratedValue; import javax.persistence.Id; public class Locker { @Id @GeneratedValue private Long id; private String name; } Member Class에도 설정을 해주고 돌리면 Locker_ID와 Member Class가 생성이 된다. @OneToOne @JoinCo..

Spring/JPA 2022.05.25