JPA(2)
-
[JPA] 엔티티 설계시 주의사항
1. Entity 에 Setter 는 닫아두자. 이론적으로 Entity는 Getter, Setter 모두 제공하지 않고 별도의 메서드를 제공하는 게 가장 이상적이다. 하지만 실무에서는 엔티티의 데이터를 조회할 일이 많고 또 Getter 같은 경우 아무리 호출해도 어떠한 일이 발생하지 않는다. 그래서 Getter 의 경우 열어두는 것이 편리하다. 하지만 Setter 는 다르다. Setter 를 호출하면 데이터가 변한다. 미래에 Setter 로 인하여 Entity 의 데이터가 왜 변경되었는지 추적하기 힘들어지므로 Setter 는 Close 해두게는 좋다. 즉, Entity는 상태가 변하지 않는 불변성을 지켜야 한다. 2. @ManyToMany를 사용하지 말자 @ManyToMany 는 편리한 것 같지만, 중간..
2021.03.22 -
[JPA] "InstantiationException" 발생 - 기본 생성자의 중요성
postman으로 테스트 중... 아래와 같은 에러가 발생하였다. org.hibernate.InstantiationException: No default constructor for entity Entity 클래스를 반환해주는 과정에서 클래스의 JSON Serialize 오류가 났는데... default Constructor(기본 생성자)를 추가해주면 간단하게 해결이 가능하다. import javax.persistence.*; import java.io.Serializable; @Entity public class User implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column private Long..
2021.03.11