JPA Anotation

구성욱·2022년 9월 21일
0

JPA

목록 보기
2/5

JPA


Anotation

1. Entity

DB의 테이블에 Mapping 되는 클래스로 DB의 테이블과 1:1 매핑

2. Table(name = "Value")

테이블을 지정하는 어노테이션으로 파라미터로 테이블 명을 지정해준다.
생략 시 클래스의 이름을 테이블의 이름으로 자동 인식한다.

3. Id

Entity 빈의 Primary Key를 의미한다.
하나의 Entity에 반드시 하나가 존재해야 한다.
복수키도 설정 가능

4. GeneratedValue(strategy="Value")

데이터베이스에 의해 자동으로 생성된 값

  • AUTO(default): 자동으로 생성 전략 결정
  • IDENTITY: DB가 기본 키 생성
  • SEQUENCE: DB SEQUESNCE를 사용해서 기본 키 할당
  • TABLE: DB에 키 생성 테이블 생성 후 이를 사용하여 기본키를 생성

5. Column

해당 멤버 변수와 테이블의 컬럼 매핑
생략 시 필드의 이름이 테이블의 컬럼으로 자동 매핑

  • 속성
  • name (String)
  • nullable (Boolean)
  • insertable (Boolean) : 엔티티 저장시 선언된 필드도 같이 저장. (default = true)
  • updatable (Boolean) : 엔티티 수정 시 이 필드를 함께 수정. (default = true)

6. Temporal

java.util.Date, java.util.Calendar 값을 매핑할 때 사용
지정 후 Application 실행 시, application.properties의 정보들로 dataSource 타입의 Bean을 만들고 hibernate 자동설정이 동작한다.

7. ManyToOne, JoinColumn()

외래키 관계 구현

조건
1. UserConference, User 두 개의 Entity가 1:N 관계로 매칭
2. UserConference는 User 엔티티의 id 컬럼을 레퍼런스 한다.

@Entity
@Table(name="user")
@Getter
@Setter
public class User {
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private long id;
	
	private @Column(name="name") String name;
	private @Column(name="password") String password;
	private @Column(name="user_id") String userId;
	private @Column(name="user_category") long userCategory;
	
	// 변수 명으로 테이블 컬럼 이름을 자동 매핑
	private String position;
	private String department;
	
	
	// Insert 시 자동 입력
	@CreationTimestamp
	private @Column(name="cdate") Timestamp cdate;
	
	// Update 시 자동 입력
	@UpdateTimestamp
	private @Column(name="udate") Timestamp udate;
}
@Entity
@Table(name="user_conference")
@Getter
@Setter
public class UserConference {
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private long id;

	@ManyToOne
	@JoinColumn(name="Conference_ID", referencedColumnName="ID")
	private Conference conferencedId;

	@ManyToOne
	@JoinColumn(name="User_ID", referencedColumnName="ID")
	private User userId;
}
profile
아무것도 몰라요우

0개의 댓글