#220811 1일 1로그 운동

Jobmania·2022년 8월 11일
0

항해 과정 기록

목록 보기
14/19
  • 기억보단 기록을

야자반 숙제 관련

1.단방향(oneToMany / ManyToOne)
-게시글 1 : 댓글 N -> post에만 연관관계 걸어보기(oneToMany) 원하는 대로 성공했으면(db에서 확인해보기) / post 연관관계 주석 처리 후 댓글에만 ManyToOne으로만 해보기
(JoinColumn에 무엇을 작성해야할지 생각하면서)

  • 단방향 양방향의 차이; 한쪽만 참조를 하면 반대편은 상대편을 모른다.

단방향 :
Join Colum
ex)ManyToOne , OneToMany
생성한다. mappedby를 적지 않는다.

2.양방향(oneToMany - ManyToOne)
-게시글 1: 댓글 N -> 양쪽 다 걸고 mappedBy와 JoinColumn은 어디다 해야하는지 직접 찾아보고 적용해보고 h2디비에 어떻게 쌓이는지 확인하기

DB상에서는 post에서는 comment키가 없지만 comment의 db상에서는 postid라는 외래키를 들고있다.

mapped by 와 joincolum 사용위치 잘 알아두기!!

3.ManyToMany로 구현해보기(@JoinTable 사용)
-게시글 N: N - 좋아요 - N:N 댓글
*추가 - oneToMany - ManyToOne으로 풀어내보기(게시글-좋아요-댓글)
좋아요 구현시 N 게시글 N좋아요에 대해서 중간엔티티를 받아서 생성한다.

매니투 매니를 쓰면 객체지향적으로 수정하기 어렵다. !!


4.Cascade , ophanremoval 사용하면서 엔티티가 어떻게 저장,삭제되는지 직접 확인해보기

**** ophanremoval을 사용하면 내가 사용한 하위객체를 삭제하고 싶을때!!
All = persist + remove가 같이 있는 기능으로 post 생성을 했을때 comment를 빈엔티티를 생성한다.

commentRepository를 안쓰고도 삭제가능하다.
post.getcommentlist().get(i).reomve()

orphanRemoval=true vs CascadeType.REMOVE
Parent가 삭제 되었을 때 Child도 함께 삭제시키는 역할을 수행하는 점에선 동일
다른점은,
관계를 끊는 것에 대한 응답!
만약 Parent의 Child 값을 null을 주었다고 가정
orphanRemoval=true는 관계가 끊어진 child를 자동으로 제거한다.
CascadeType.REMOVE는 관계가 끊어진 child를 자동 제거하지 않는다.
관계가 끊어졌다는 것을 제거로 보지 않기 때문에
https://modimodi.tistory.com/22

  • 부모 엔티티 삭제
    CascadeType.REMOVE와 orphanRemoval = true는 부모 엔티티를 삭제하면 자식 엔티티도 삭제한다.
  • 부모 엔티티에서 자식 엔티티 제거
    CascadeType.REMOVE는 자식 엔티티가 그대로 남아있는 반면, orphanRemoval = true는 자식 엔티티를 제거한다.

5.@id @GenerateValue(strategy = GenerationType.IDENTITY) , AUTO의 차이점 직접 해보면서 경험해보기

Auto
전체 게시를을 id를 달다.

identity(게시물 댓글 각각 id)이게더 좋음.


6.회원 엔티티에 CITY,STREET,ZIPCODE는 (주소관련)은 별도의 클래스생성하여 @Embbeded , @Embeddable로 추가해보기

한객체의 여러정보를 넣고 싶을때
db에 하나 저장하는데 2개가 나옴

https://galid1.tistory.com/592


7.게시글의 카테고리를 @Enumerated 로 해보기
저장할때 EnumType.ORDINAL,STRING 에 따른 차이점 알아보기
-> 게시글 저장할때 카테고리로 숫자(0,1)로 넣어줘서 저장해보기, GAME,MUSIC처럼 Enum으로 넣어서 save해보기
카테고리, 남녀 , 중간에 변경불가 .. 그안에 있는 값만 사용할 수 있다.
ex) admin user, 남자여자
db에
Ordinal는 id가 들어감
String으로 하면 앞의 String이 들어감..


8.@transient 를 사용하여서 게시글의 댓글 수(size)를 객체에 저장해보기(DB저장 X)
-> db에 저장할 정도까지는 아닌데, 객체는 들고 있음
객체지향적으로 설계를 하기 위함 ex)조회수,, 하트수 등등


9.LAZY로딩 , EAGER로딩 사용해서 불러와보기
게시글-댓글 연관관계시 LAZY했을 떄 게시글만 불러왔을 때 쿼리가 어떻게 나가는지
-> 댓글을 불러오려면 어떻게 해야하는지
게시글-댓글 연관관계시 EAGER했을 떄 게시글만 불러왔을 때 쿼리가 어떻게 나가는지

즉시로딩은 연관관계를 다불러옴
지연로딩은 필요한거 한게만 불러옴..

Eager / N+1 문제


깃헙 액션에 대해서 알아보자!!
https://www.youtube.com/watch?v=uBOdEEzjxzE

감귤선생..
https://bcp0109.tistory.com/363


S3
aws bucket을 만들고 권한 설정을하고 S3를 만든다음에!!
@Requestpart

profile
HelloWorld에서 RealWorld로

0개의 댓글