ssung_항해일지/항해99_Spring_입문, 숙련, 심화

spring - 17일차

ssungcohol 2023. 2. 21. 02:57

오늘의 문제점

 - 댓글 작성 시 id 값이 댓글 작성 순서에 맞게 생성되는 것이 아닌, 전체 작성 글과 연동되어 생성된다.

 즉, 처음 게시글을 작성하면 첫 게시글 1번의 id값이 1번이 되고, 그 사이에 댓글을 작성하면 댓글 1번의 id가 1번이 되야 하는데 id 값이 2번으로 작성되고, 다음 게시글을 작성하면 게시글 2번의 id 값이 3번이 된다..

 뭐가 문제인 것일까..

 

Notice Entity 변경 전

    @Id  // JPA에서 기본키를 나타는 필드에 사용
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

 

Notice Entity 변경 후

    @Id  // JPA에서 기본키를 나타는 필드에 사용
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

Comment Entity

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "commentId")
    private Long id;

이유 찾음

h2 DB의 특성 때문에 발생한 문제였음

속성을 둘 다 AUTO로 맞춰놓으면 게시글, 댓글에 관계 없이 그냥 생성된 순서대로 id 값이 생성된다.

따라서, 전부 다 IDENTITY로 하던지 아니면 위의 예시처럼 하나만 IDENTITY로 하던지


JsonIgnore

- 순환참조 방지해주는 친구였는데, 찾아보니...

직렬화, 역직렬화에 사용되는 논리적 속성(프로퍼티) 값을 무시할 때 사용한다는 친구였다.

이것이 또 무엇인고 하니..양방향 매핑을 하고, 결과를 출력하다보면 똑같은 데이터가 반복적으로 노출되는 상황이 발생하였는데, 이 상황을 막기위해 사용하는 친구 였던 것.

이유는 JsonIgnore 어노테이션이 Json 데이터에 해당 속성은 null로 들어가게한다. 즉, 데이터에 아예 포함이 안되게 한다는 말이라는데, 정확하게 무슨 말인지 이해를 하지 못했다.

그 외에도 다양한 옵션들이 있는데 추후에 다시 공부를 해봐야 할 것 같다.


오늘의 교훈

 

붙잡고 늘어지고, 한 개뿐인 뇌를 맞대고 문제를 해결하고, 다시 한 개의 뇌로 생각하고 이해를 해보자..

목표를 달성했는데 아직까지는 찜찜하게 이해가 된 느낌이다...

하나하나 해나가야할게 너무나도 많다

자바 스터디 예제부터, 스프링 예제까지 확인을 하면서 공부를 해야한다

심화주차 과제를 진행해야할 지 아니면 밀린 공부들을 채워나가며 다시 해야할 지 생각하고 움직여야겠다.

 

728x90

'ssung_항해일지 > 항해99_Spring_입문, 숙련, 심화' 카테고리의 다른 글

spring - 19일차  (0) 2023.02.22
spring - 18일차  (0) 2023.02.21
spring - 15일차  (0) 2023.02.19
spring - 14일차  (0) 2023.02.18
spring - 13일차  (0) 2023.02.17