What is Entity?
- 데이터 모델링에서 사용되는 객체
- 데이터 베이스 테이블
What is Repository
- 데이터 베이스 테이블에 접근하기 위해 사용하는 인터페이스
- 실제로 DB에 접근하는 객체
Entity
기본 코드
@Entity
@Table(name = "PERSON", uniqueConstraints = {
@UniqueConstraint(name = "NAME_AGE_UNIQUE", columnNames = {"NAME", "AGE"})
})
@Access(AccessType.FIELD)
@Access(AccessType.PROPERTY)
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name
@Enumerated(EnumType.STRING)
private String role;
@Transient
private String description;
@Temporal(TemporalType.DATE)
@Temporal(TemporalType.TIME)
@Temporal(TemporalType.TIMESTAMP)
private Date regDate;
@Column(unique = true)
@Column(columnDefinition = "varchar(100) default 'EMPTY'")
@Column(nullable = false)
@Column(length = 400)
@Column(precision = 10, scale = 2)
}
클래스 어노테이션 정리
- @Entity: 엔티티임을 선언
- @Table: 테이블의 이름과 제약조건을 설정할 수 있음
-> @UniqueConstraint: 제약 조건을 설정
- @Access: 접근 방식 설정
-> AccessType.FIELD: 직접 접근
-> AccessType.PROPERTY: getter 사용해서 접근
AccessType.PROPERTY
@Entity
@Access(AccessType.FIELD)
@Access(AccessType.PROPERTY)
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Transient
private String firstName;
@Transient
private String lastName;
@Access(AccessType.PROPERTY)
public String getFullName() {
return firstName + lastName;
}
}
- 다음과 같은 방식으로 Getter를 이용하여 접근
변수 어노테이션 정리
- @Id: 기본키(Primary key)를 설정
- @GeneratedValue(strategy = GenerationType.AUTO): 기본키를 조건에 따라 자동으로 생성함
- @Enumerated: Enum 사용을 위한 것
-> EnumType.STRING: 이름값 저장
-> EnumType.ORDINAL: 순서 저장
- @Transient: 매핑을 하지 않음, 테이블에 저장 X
- @Temporal:날짜 타입 지정
- @Column: 컬럼 지정
Repository
public interface PersonRepository extends JpaRepository<Person, Long> {
}