λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

JPA

JPA μ—”ν‹°ν‹° μ–΄λ…Έν…Œμ΄μ…˜

JPA Entity Annotation

JPA둜 λ°μ΄ν„°λ² μ΄μŠ€μ™€ 맀핑될 μ—”ν‹°ν‹°λ₯Ό μž‘μ„±ν•  λ•Œ ν•„λ“œμ— ν•„μš”ν•œ μ–΄λ…Έν…Œμ΄μ…˜μ„ μ•Œμ•„λ³΄μž.

@Id

@IdλŠ” ν•„λ“œμ™€ Primary Keyλ₯Ό 맀핑할 λ•Œ μ“°λŠ” μ–΄λ…Έν…Œμ΄μ…˜μ΄λ‹€.

@Id둜 맀핑을 ν•΄μ€€ λ’€, PK 생성에 λŒ€ν•œ μ „λž΅μ„ μ •ν•  수 μžˆλ‹€.

@GeneratedValue(strategy = GenerationType.μ „λž΅ 방법) 의 μ–΄λ…Έν…Œμ΄μ…˜μœΌλ‘œ PK 생성 μ „λž΅μ„ μ •ν•  수 μžˆλ‹€.

μ „λž΅μ˜ μ’…λ₯˜λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

  • IDENTITY : MySQL의 Auto_Increment 방식이닀. λ°μ΄ν„°λ² μ΄μŠ€κ°€ 1μ”© μ¦κ°€μ‹œν‚€λ©° μžλ™μœΌλ‘œ 생성해 μ€€λ‹€.
  • SEQUENCE : 였라클의 μ‹œν€€μŠ€ 였브젝트 방식을 μ‚¬μš©ν•œλ‹€.
  • TABLE : ν‚€ μƒμ„±μš© ν…Œμ΄λΈ”μ„ λ§Œλ“€μ–΄μ„œ μƒμ„±ν•˜λŠ” 방식이닀.
  • AUTO : JPA에 μ„€μ •λœ 데이터 베이슀 방언에 λ§žμΆ°μ„œ μƒμ„±ν•œλ‹€. 방언을 ν™•μΈν•˜κ³  μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

@Transient

ν•΄λ‹Ή ν•„λ“œκ°€ λ°μ΄ν„°λ² μ΄μŠ€μ— 반영 μ•ˆ 되게 ν•œλ‹€.

@Column

ν•„λ“œμ™€ λ§€μΉ­λ˜λŠ” μΉΌλŸΌμ— λŒ€ν•œ 섀정을 ν•  수 μžˆλŠ” μ–΄λ…Έν…Œμ΄μ…˜μ΄λ‹€.

λ‹€μŒκ³Ό 같은 섀정을 ν•  수 μžˆλ‹€.

  • name : ν•„λ“œμ™€ 맀핑될 ν…Œμ΄λΈ”μ˜ 칼럼 이름을 μ •ν•  수 μžˆλ‹€. λ””ν΄νŠΈ 값은 ν•„λ“œμ˜ 이름이닀.
  • unique : μΉΌλŸΌμ— λŒ€ν•œ unique 쑰건을 걸어쀄 수 μžˆλ‹€. 이 섀정보단 엔티티에 직접 '@Table(uniqueConstraints = “abc”)'둜 μ„€μ •ν•  수 μžˆλ‹€.
  • nullable : 이 속성을 flase둜 ν•˜λ©΄ not null μ œμ•½ 쑰건이 κ±Έλ¦°λ‹€.
  • insertable, updatable : μ»¬λŸΌμ„ μ‚½μž…ν•˜κ±°λ‚˜, μˆ˜μ •ν–ˆμ„ λ•Œ λ°˜μ˜ν• μ§€λ₯Ό μ—¬λΆ€ λ””ν΄νŠΈ 값은 true
  • length : 칼럼 κ°’μ˜ 길이λ₯Ό 직접 μ„€μ •ν•  수 μžˆλ‹€.
  • columnDefinition : λ°μ΄ν„°λ² μ΄μŠ€μ—κ²Œ 칼럼 정보λ₯Ό 직접 μ€€λ‹€.

@Enumerated

  • EnumType.String : Enum 이름을 문자 κ·ΈλŒ€λ‘œ μ €μž₯
  • EnumType.ORDINAL : μ΄λ„˜ μˆœμ„œλ₯Ό 디비에 μˆœμ„œμ— 맞게 숫자둜 μ €μž₯ -> μˆ«μžκ°€ μ‚¬λžŒμ˜ 생각과 λ‹€λ₯΄κ²Œ λ°”λ€ŒκΈ° λ•Œλ¬Έμ— 잘 μ•ˆ 쓰인닀.

'JPA' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

JPAμ—μ„œ Pageable둜 νŽ˜μ΄μ§€ μ²˜λ¦¬ν•˜κΈ°  (0) 2022.03.13
ORM(Object Relational Mapping)  (0) 2022.03.13
JPAμ—μ„œ Optional 처리  (0) 2022.03.11
JPA μ–‘λ°©ν–₯ λ¬΄ν•œ μ°Έμ‘°  (0) 2022.03.10
Entity κ°„μ˜ 관계  (0) 2022.03.10