✅ Raw JPA 테이블 매핑 기능
✅ Raw JPA 필드 타입 매핑 기능
@Entity
@Table
@Entity
@Table(name = "TB_USER")
public class User () {...}
@Id
@GeneratedValue
@Column
이 밖에도 많은 것을 설정할 수 있다.
@Temporal
@Transient
@Entity
@Table(name = "TB_CHANNEL")
public class Channel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
private String name;
...
}
기본 타입
@Column
@Entity
가 붙어있으면 자동으로 필드들에 @Column
이 붙음 → @Column
을 붙이지않아도 된다.@Column
은 사이즈를 제한하거나 추가로 설정할 부분이 있을 때 적용한다.@Enumerated
Enum 매핑용도로 쓰이며 실무에서는 @Enumerated(EnumType.*STRING*)
으로 사용권장
Default 타입인 ORDINAL
은 0,1,2.. 값으로 들어가기 때문에 추후 순서가 바뀔 가능성있다.
예시
@Entity
@Table(name = "TB_CHANNEL")
public class Channel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
private String name;
@Enumerated(EnumType.STRING)
private Type type;
public enum Type {
PUBLIC, PRIVATE;
}
}
Composite Value 타입
@Embeddable
@Embedded
@AttributeOverrides
@AttributeOverride
예시
@Embeddable
public class Address {
private String street;
private String city;
private String state;
private String zipCode;
}
@Entity
@Table(name = "TB_USER")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
@Column(length = 25)
private String username;
@Column(length = 25)
private String password;
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "street", column = @Column(name = "home_street"))
}) // Address에 있는 "street" 값을 여기서는 "home_street" 로 저장하겠다.
private Address address;
}