대략적으로만 정리를 할 예정이다. 전부 다 보기에는 무리가 있고 공식 document를 보면 되기에 대략 알거나 자주 쓰는 것만 정리를 할 예정이다.
엔티티 접근 방식에 대한 것이다. 두 가지가 존재한다.
@Entity
@Access(AccessType.FIELD)
public class Room {
}
객체 필드를 테이블 컬럼에 매핑한다.
자주 사용하는 속성으로는 다음과 같다.
속성 | 기능 | 기본값 |
---|---|---|
name | 필드와 매핑할 테이블 컬럼 이름 | 객체 필드 이름 |
nullable | null 값의 허용 | true |
unique | unique 제약 조건 | |
length | 문자 길이 제약 조건 | 255 |
@Column(name = "id", length = 20)
private Integer id;
클래스에 필수로 붙여야 한다. 붙여진 클래스는 JPA가 관리한다.
사용하는 속성으로는 다음과 같다.
속성 | 기능 | 기본값 |
---|---|---|
name | JPA에서 사용할 이름 | 클래스 이름 |
@Entity(name="member")
public class Member
보통 Id 어노테이션과 함께 사용한다. 키 생성 전략을 선택할 수 있는 옵션을 제공하는 어노테이션이다.
제공하는 옵션은 네가지가 있다.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Long id;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
해당 필드와 기본 키를 매핑시키는 것이다.
@Id
private String id;
외래 키를 매핑할 때 사용한다.
자주 사용하는 속성으로는 다음과 같다.
속성 | 기능 | 기본값 |
---|---|---|
name | 매핑할 외래 키 이름 | 필드명_참조하는 테이블의 PK 컬럼명 |
nullable | null 값의 허용 | true |
unique | unique 제약 조건 | |
foreign | 외래 키 제약조건을 직접 지정 |
@ManyToOne
@JoinColumn(name="TEAM_ID", nullable=false)
private Team team;
속성 | 기능 | 기본값 |
---|---|---|
cascade | 영속성 전이 기능 | |
fetch | 글로벌 페치 전략 | FetchType.EAGER |
속성 | 기능 | 기본값 |
---|---|---|
fetch | 글로벌 페치 전략 | FetchType.LAZY |
mappedBy | 연관관계의 주인을 지정하는 속성 |
@OneToMany(mappedBy="room", fetch="FetchType.EAGER")
@ManyToOne(cascade="CascadeType.PERSIST", fetch="FetchType.LAZY")
컨테이너가 관리하는 엔티티 매니저를 주입하는 어노테이션이다. 이것을 사용해야 트랜잭션 기능을 사용할 수 있다.
@PersistenceContext
EntityManager em;
엔티티와 매핑할 테이블을 지정한다.
사용하는 속성으로는 다음과 같다.
속성 | 기능 | 기본값 |
---|---|---|
name | 매핑할 테이블 이름 | 엔티티 이름 |
schema | schema 기능이 있는 DB에서 schema를 매핑 |
@Table
@Entity(name="member")
public class Member{}
해당 어노테이션이 붙여있는 클래스나 메서드에 트랜잭션을 적용하게 하는 어노테이션이다.
호출하면 트랜잭션을 시작하고 종료하면 트랜잭션을 커밋한다. 예외가 나올 시 롤백한다.
@Transactional