lazy로 연결했을 때 영속성이 연결될 때 select를 무조건 실행하다보니 발생한 문제 해결방법 eager로 만든다 문제점: 불필요한 join을 계속해야한다 jpql에서 join fetch를 사용한다 EntityGraph 사용 MultipleBagFetchException 이발생 객체를 list -> set으로 변경
@Entity JPA에서 엔티티 클래스임을 나타내기 위해 사용되는 어노테이션입니다. 해당 클래스를 데이터베이스의 테이블과 매핑하기 위해서는 반드시 @Entity 어노테이션을 추가해야 합니다. @Table 엔티티 클래스와 매핑되는 데이터베이스 테이블을 지정하기 위해 사용되는 어노테이션입니다. name 속성을 이용하여 테이블 이름을 지정할 수 있으며, catalog, schema, uniqueConstraints 등 다양한 속성을 설정할 수 있습니다. @Column 엔티티 클래스의 필드와 데이터베이스 테이블의 컬럼을 매핑하기 위해 사용되는 어노테이션입니다. name, nullable, unique, length, precision 등 다양한 속성을 설정할 수 있습니다. @Id 엔티티 클래스의 필드 중 데이터베이스 테이블의 기본 키 역할을 수행하는 필드임을 나타내기 위해 사용되는 어노테이션입니다. 하나의 엔티티 클래스에서는 반드시 하나의 @Id 어노테이션을 가
post(one) - reply(many)의 관계에서 post를 삭제하려고 하면 영속성 문전이 문제로 reply가 삭제되지 못하고 rollback이 발생하는 문제가 발생했다. 해결방법을 찾아본 결과 cascase(영속성 전이)옵션을 CascadeType.ALL, CascadeType.REMOVE로 설정해주면 된다. 위의 방법으로 하다보니 다른 문제가 있었는데 주인객체들은 삭제하지 않고 싶었다. 영속성 관리에 따르면 댓글쪽에서 먼저 포스트를 null처리 해주면 관계가 끊어지면서 해결자체는 되었다. 더 찾아본 결과 @EntityListeners중 라는 엔티티 생명주기에 따라 처리하는 과정이 존재함을 알게 되었고 @PreRemove를 사용하여 post가 삭제되기 전에 post에 연결된 replies에서 포스트와 관계를 끊어주는 처리를 하였다.
게시글을 등록하는 api를 테스트하는데 좀전까지 되던게 되지 않아서 로그를 보니 post.post.content이런 애러가 뜨길래 처음에는 user를 같이 등록하면서 순환참조가 걸리는 건가 싶었다. > Error: 1366-22007: Incorrect string value: '\xEA\xB2\x8C\xEC\x8B\x9C...' for column post.post.title > could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute statement 그런데 이유는 다른게 아니라 데이터베이스의 인코딩설정.... aws에서 rds로 mariadb를 이용하여 구성했기에 파라미터 그룹을 수정하려 했다. 그런데 뜨는 거는....  ` 1. @RequestBody에 값 그대로 받기 java @PostMapping("/members/new") @ResponseBody public String create(@RequestBody String name, @RequestBody String phone) { memberService.join(member); return "등록성공"; } java @PostMapping("/members/new") @ResponseBody public String create(@RequestBody @Valid Member member) { memberService.join(member); return "등록성공"; } java @Getter public class AddMemberDto { private String name; private Str