실전 프로젝트 6일 회고

SaGo_MunGcci·2022년 8월 31일
0

실전 프로젝트

목록 보기
5/19

Today do list

  • 오시영 튜터님 깃 라이브 세션 강의 수강

  • 라이브 세션 후 깃 이슈 발행 및 백로그 관리

  • 기능 개발

  • 트러블 슈팅 : A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance


TIL

오시영 튜터님 깃 라이브 세션 강의 수강

  • 깃에 프로젝트를 올리면 read me를 잘 설명해야 된다.

  • 개발자들은 프로젝트를 git readme에 설명을 한다.

  • 깃 리드미 예시
    https://github.com/siyoungoh/readme-template/tree/master/korean
    노션 링크를 참조해도 된다.
    예제에서 트러블 슈팅을 추가하는 것이 좋다.

  • 깃에 버그나 오류를 해결할때 깃에 이슈를 사용해서 나타내기

  • 깃헙에 spring-project/spring-framework참조하기

  • 이슈 pr(pull request)

  • 깃 백로그 다루는 법 배우기

  • 설계 배포 테스트 구현이 하나의 사이클

  • readme.md는 중간중간 작성하는 것이 좋다.

  • 깃 플로우와 깃헙 플로우는 다른것이다.

  • 깃 프로젝트는 내것이 절대 아니다 우리것이다.

    • 한사람이 했다는 티가 나면 컨밴션하게 작성한 것이 아니기 때문에
      잘못된 프로젝트가 될 가능성이 높다.
  • 프런트 백앤드 이슈 및 백로그를 남겨서 히스토리를 남기기

Trouble Shooting

  • A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance

최초 문제 발생

  • Auction 테이블에 Images테이블과 연관관계를 맺어주는 와중

A.클라이언트 상태

  • 클라이언트에 internal server error 500 발생

B. 서버상태

  • A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance 오류 발생

c. 어플리케이션 정보

  • 다른 기능은 정상적으로 작동함. auction테이블에 있는 다중 이미지 리스틀 삭제 할때만 오류가 발생함.

  • 해당 코드

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
private List<MultiImage> multiImages = new ArrayList<MultiImage>();
  • 오류 원인
    Auction 엔티티에서 관리하는 MultiImage 컬렉션에 참조 인스턴스가 변경되면서 orphanRemoval = true 옵션 동작에 문제가 생긴 것이다.

  • 하이버네이트에서 컬렉션 타입은 영속화 될 때 org.hibernate.collection.internal.PersistentBag 타입으로 래핑된다고 하는데

  • 이 PersistentBag를 인스턴스를 이용하여 영속성 전이와 고아객체 추적하는데, multiImages가 먼저 삭제되고 그다음 Auction 테이블의 private List<MultiImage'> multiImages 참조를 하니 PersistentBag 인스턴스가 엔티티와의 참조가 끊어져 버려 문제가 발생하게 된 것인것 같다.

  • 즉 없는 고아객체를 찾으라고 하니 오류가 발생한것이다.

  • 해결

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL )
private List<MultiImage> multiImages = new ArrayList<MultiImage>();
  • orphanRemoval = true 이코드를 삭제한 후 서버 실행

  • 정상적으로 작동함.



Retrospection

  • 아침 전체회의후 깃 라이브 세션, 노션 오늘의 할일 작성, 깃 이슈 발행및 백로그 작성 등등

  • 개발에 집중하는 것 보다 그 외적인 깃, 노션관리에 집중을 더하는 것 같은데, 나는 개발자이다. 당연히 깃도 중요하고 노션관리도 중요하지만 이런 이유로 개발을 소홀히 하지 말자.



Tommorrow do list

  • 경매 종료

  • 내가 참여한, 관심있어하는, 올린 경매 기능 개발하기.

  • Spring JPA insertable, updatable



profile
이리저리 생각만 많은 사고뭉치입니다.

0개의 댓글