@MappedSuperclass 어노테이션은 엔티티 클래스에서 공통으로 사용되는 매핑 정보를 정의하기 위해 사용되는 것입니다.해당 어노테이션을 사용하면 DB테이블과 직접 매핑되지 않지만 영속성을 가지지 않는 추상 클래스가 됩니다. 따라서 추상 클래스를 하위 엔티티 클래
serializable는 인터페이스 입니다. 동시에 Java의 직렬화 기능을 지원합니다.여기서 직렬화란, 객체를 바이트 스트림으로 변환하여 파일에 저장하거나 네트워크를 통해 전송할 수 있게 하는 기술입니다.Serializable를 구현하는 목적은 크게 3가지입니다.객체
@Transient는 엔티티 클래스의 필드 중 DB에 매핑하지 않을 필드를 표시하는 것입니다.따라서 영속성 컨텍스트를 통해 DB에 저장되거나 로드되지 않습니다.@Transient를 사용하는 이유는 2가지가 있습니다.특정 필드를 일시적으로 가지고, DB에는 저장할 피룡가
@Convert는 특정 필드의 데이터를 DB에 저장할 때 Converter를 통해서 바꾼다는 것입니다.1번째 메소드 convertToDatabaseColumn은 말 그대로 LocalDateTime을 Timestamp로 변환하는 역할입니다.2번째 메소드 convertTo
실무에서 BaseEntity 추상클래스가 반드시 가져야하는 필드들입니다.serialVersionUID: 데이터의 무결성을 지키기 위해서 고유 식별자로 존재해야합니다. 직렬화와 역직렬화시 매핑을 통해 호환성을 체크합니다.updateCount: DB row, 즉 객체가 몇
Spring Security 컨텍스트에서 사용자의 정보를 가져오는 코드입니다.Spring Security는 인증된 사용자의 정보를 Authenticatoin 객체에 저장합니다.따라서 SecurityContextHolder.getContext().getAuthentica
@JsonInclude는 Java 객체를 JSON으로 변환할 때 포함할 필드를 지정합니다. 객체의 일부 필드를 무시하고 JSON으로 변환할 떄 해달 필드를 제외할 수 있습니다.@JsonInclude(JsonInclude.Include.NON_NULL)Null이 아닌 필
identity전략은 DB에 값을 저장하고 나서야 기본 키 값을 구할 수 있습니다.이유는 엔티티가 영속 상태가 되기 위해서는 식별자가 필요합니다. IDENTITY 전략의 경우, 식별자 생성을 DB에 저장해야 얻을 수 있으므로 em.persist()를 호출하여 객체를 영
@PreUpdate와 @PrePersist는 JPA에서 사용되는 라이프사이클 콜백 어노테이션입니다. 엔티티의 상태가 DB에 저장되기 전에 동작이 수행되도록 지정하는 데 사용됩니다.엔티티의 상태가 업데이트 되기전에 실행되는 메소드입니다.엔티티가 처음으로 저장되기 직전에