본문 바로가기
springboot블로그만들기(youtube강좌)

스프링부트 강좌 24강(블로그 프로젝트) - 회원가입 위한 insert 테스트

by wannabe 2021. 7. 4.

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

User테이블

Board테이블

Reply테이블

2. 연관관계 만들기

@ManyToOne

@OneToMany

@OneToOne

@ManyToMany

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

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

 

[JPA] @ManyToMany, 다대다[N:M] 관계

다대다[N:M] 실무에선 사용하지 않는 것을 추천한다. 사용하면 안되는 이유를 학습하자. 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없다. 연결 테이블(조인 테이블)�

ict-nroo.tistory.com

3. 더미 데이터 insert

@DynamicInsert insert할때 null 인 필드 제외

User클래스에 선언된 RoleType 확인

4. 더미 데이터 select 및 응답

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

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

 

[JPA] 영속성 컨텍스트와 플러시 이해하기

영속성 컨텍스트 JPA를 공부할 때 가장 중요한게 객체와 관계형 데이터베이스를 매핑하는 것(Object Relational Mapping) 과 영속성 컨텍스트를 이해하는 것 이다. 두가지 개념은 꼭 알고 JPA를 활용하자.

ict-nroo.tistory.com

6. 더미 데이터 delete

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 

 

JPA Entity를 JSON으로 변환할 때 발생할 수 있는 문제점과 해결방법

이번에 프로젝트를 진행하면서 엔티티를 json으로 변환 후에 view로 전달해주는 과정에서 문제가 발생했었습니다. 일단 결론부터 말씀드리자면 DTO를 따로 만들어서 서비스에서 엔티티 대신 DTO를

dublin-java.tistory.com