스프링

스프링 짧은 지식

E재HO 2023. 7. 23. 20:50

@CreatedDate
생성된 시간 정보를 자동으로 저장해준다.
@MappedSuperclass
객체의 입장에서 공통 매핑 정보가 필요할 때 사용한다.
이렇게 공통 매핑 정보가 필요할 때, 부모 클래스에 선언하고 속성만 상속 받아서 사용하고 싶을 때 @MappedSuperclass를 사용한다.

@EntityListeners(AuditingEntityListener.class)
Entity Listener는 엔티티의 변화를 감지하고 데이블의 데이터를 조작하는 일을 한다.
이전에는 Column값이 수정되는 것에 대해서 반복된 코드를 추가해야했으며 개발자가 직접 추가를 하보니 실수가 발생하는 경우가 종종 발생하였다. 하지만 이러한 것은 EntityListener를 사용하면 쉽게 개선할 수 있다.

@where
JPA에서 @Where를 사용하면 엔티티를 조회하는 경우 일괄적인 Where 조건을 추가할 수 있습니다.

@Table(UniqueConstrain)
자세한 설명

https://velog.io/@hwan2da/JPA-Columnuniquetrue-UniqueConstraints

DB에서 데이터를 구별하는 방법은 무엇일까?

바로 PK를 유일한 식별자로 구분하여 PK가 같으면 같은 데이터라고 판단한다. 테이블에서는 한 가지의 PK를 갖는 데, 보통 Index를 PK로 주어서 저장하는 편이다.

근데 만약 회원의 중복 가입을 막으려고 한다면 어떤 방법이 좋을까? 회원가입을 하는 방식은 핸드폰 인증, 소셜 인증, 이메일 인증 등이 있을 것이다.

@Entity
@Table
public class Person implements Serializable {
    @Id
    @GeneratedValue
    private Long id;  
    private String name;
    private String password;
    private String email;
    private Long phoneNumber;
    private Boolean isActive;
    private String securityNumber;
    private String departmentCode;
    @JoinColumn(name = "addressId", referencedColumnName = "id")
    private Address address;
   //getters and setters
 }

다음과 같은 테이블에서는 어떤 방식으로 중복회원가입을 막을 수 있을까? 바로 핸드폰 번호에 유니크 조건을 주어서 해결할 수 있다.