ARCHIVES

태그

신고하기

상단 메뉴 페이지

기본 콘텐츠로 건너뛰기

스프링부트 with JPA 블로그 8강 - 테이블 생성하기

원문 : https://getinthere.tistory.com/23 (새창이동)
영상 : 너튜브 (새창이동) , 영상18번
겟인데어 님의 윈도우 강좌를 맥으로 해보면서 시행착오를 적습니다.

 0. 사전준비

    @Entity 어노테이션을 사용하기 위해 주석처리했던 jpa 디펜던시를 주석해제 한다.
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

1. Blog 테이블 만들기 (User, Board, Reply) 

    User 테이블 생성 실습, Charset 잘 적용 되었는지 확인

    Board 테이블 생성

    Reply 테이블 생성


    연관관계의 주인 - 22강


2. 연관관계 만들기

    @ManyToOne : 사용

    @OneToMany : 사용

    @OneToOne : 사용


    @ManyToMany

    ManyToMany는 사용하지 않는다. 그 이유는 서로의 primary key로만 중간 테이블을 생성해주는데, 날짜나 시간 다른 필드들이 필요할 수 있기 때문에, 

    내가 중간 테이블을 직접만들고 @OneToMany, @OneToMany를 사용한다. 아래 링크 확인

    https://ict-nroo.tistory.com/127


3. 더미 데이터 insert 24강

    @DynamicInsert insert할때 null 인 필드 제외

    user.setRole(RoleType.USER);

    한줄로 저장이 가능하네...


4. 더미 데이터 select 및 응답 27강

User user = userRepository.findById(id).orElseThrow(new Supplier<IllegalArgumentException>() {
			@Override
			public IllegalArgumentException get() {
				return new IllegalArgumentException("해당 사용자가 없습니다.");
			}
		});
@PageableDefault(size=2, sort="id", direction = Sort.Direction.DESC) Pageable pageable

5. 더미 데이터 update 28강


6. 더미 데이터 delete

    삭제 완료.
    Exception 처리하기 - 에러 페이지를 만들어 보자 31강

7. 무한 참조 방지하기 - 나중에

(1) Entity로 받고 Json직렬화 하기 전에 DTO 생성후 복사하기

BeanUtils.copyProperties(A,B) 

(2) 처음부터 DTO로 DB에서 받기

(3) @JsonIgnore

(4) @JsonIgnoreProperties({"board"})

(5) @JsonBackReference @JsonManagedReference 

 

참고 https://dublin-java.tistory.com/32  


댓글