Programming/Spring
[Spring] @Transient
기록하는 백앤드개발자
2020. 12. 2. 08:30
반응형
엔티티의 변수들은 테이블 컬럼과 매핑된다.
@Getter
@Setter
@ToString
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class UserEntity {
// 고유키
private Long userId;
// 페이데이 사용자 ID
private Long paydayUserId;
// 비밀번호
private String password;
// 사용자명
private String name;
// 이메일
private String email;
// 전화번호
private String phone;
}
하지만 비지니스 로직을 수행하기 위해 컬럼에 없는 변수가 발생하기도 한다.
예를 들어 회원가입 시에 패스워드 확인용 변수를 하나 더 받아야 한다.
이럴 때에 엔티티를 손상시키지 않으려면 엔티티를 상속 받은 VO를 만들면 된다.
@Getter
@Setter
@ToString
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class AccountVo extends UserEntity {
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String beforePassword;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String changePassword;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String confirmPassword;
}
하지만 JPA를 쓸 때에는 다르다.
@Transient를 이용하여 디비컬럼과 상관없이 엔티티의 특정 변수를 영속 필드에서 제외할 때 사용한다.
@Entity
@Table(name = "USER")
public class UserEntity {
// 고유키
private Long userId;
// 페이데이 사용자 ID
private Long paydayUserId;
// 비밀번호
private String password;
// 사용자명
private String name;
// 이메일
private String email;
// 전화번호
private String phone;
@Transient
private String confirmPassword;
UserEntity 클래스의 confirmPassword는 디비상에 저장할 필요가 없다.
반응형