1. NotFound
org.hibernate.annotations 에 포함되어 있음
@JoinColumn 등으로 조인을 했을 시, 조인한 테이블의 값이 null 일 경우
EntityNotFoundException
이 발생하는데, 이럴 경우
@JoinColumn("dto_id")
@NotFound(action = NotFoundAction.IGNORE)
private DTO dto;
을 해주면 Exception 이 발생하지 않음. Ignore, Exception 2개의 값이 있는데 default 는 Exception 인 모양이다.
2. Transient
javax.persistence 에 포함되어 있음
Entity 에 변수는 있으나, 컬럼과의 매핑을 원하지 않는 경우 사용
@Transient
private String compositeUrl;
주로 결과를 바로 넘기지 않고, 결과값을 조작해서 (filePath 에 fileName 을 더해준다거나..) 새로운 변수에 넣거나 할 때 썼다.
3. JsonIgnore
엄밀히 말하면 JPA 용 annotation 은 아니지만, 사용할 땐 2번과 연관하여 사용했던 것 같다.
결과 형태를 json 으로 뿌려줄 때, 해당 변수가 출력되지 않게 함
@JsonIgnore
private Member member;
4. Embedded, Embeddable
Entity 안에 다른 Entity 를 넣을 경우 해당 annotation 들을 사용, 관련있는 것들을 하나로 묶어서 객체로 사용할 때 사용함
ex) Article 이라는 클래스가 있고, 해당 등록 정보를 RegInfo 로 관리한다고 하면
@Entity
public class Article {
@ID
private Long id;
private String content;
@Embedded
private RegInfo regInfo;
}
@Entity
@Embeddable
public class RegInfo {
@Column("reg_id")
private Long regId;
@Column("reg_dt")
private LocalDateTime regDt;
}
5. Convert
DB에서 사용하는 값과 서버에서 사용하는 타입이 서로 달라 값을 변경해줘야 할 때 사용
주로 IP (127.0.0.1) 같이 String 으로 받은 값인데, DB 에는 Number 형태로 저장하거나 서버에서는 Boolean 값을 사용하는데 DB 에서는 Y/N 값으로 저장할 때 사용하곤 했다.
@Convert(converter = YNBooleanConverter.class)
@Column("use_yn")
private Boolean use;
당장 쓰는 것 중에 생소한 것은 이정도 되는 것 같다.
추후 진행하면서, 새로운 걸 써보면 그 때 추가할 예정.
'개발 관련 > spring' 카테고리의 다른 글
Feign 사용 (1) (0) | 2022.07.14 |
---|---|
HandlerMethodArgumentResolver 사용 (0) | 2022.07.14 |
JPA 락에 대해 (0) | 2022.07.14 |
Mockito 정리 (1) (0) | 2022.07.14 |
SpringBoot Actuator (0) | 2022.07.14 |