๋ฐ์ํ
250x250
Notice
Recent Posts
Recent Comments
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ๋ฆฌ์กํธ
- AI
- ํ ์คํธ๋ง์ด๋
- nlp
- ์ธ๊ณต์ง๋ฅ
- ํ์ด์ฌ
- tableau
- github
- ๋ฐ์ดํฐ๋ถ์
- ๋น ๋ฐ์ดํฐ
- ํ๋ธ๋ก
- ๋ฐ์ดํฐ ๋ถ์
- sap
- ํ๋ธ๋ฃจ
- ์ฝ๋ฉํ ์คํธ
- ๋ฐฑ์ค
- abap
- erp
- ์์ฐ์ด์ฒ๋ฆฌ
- Git
- ํ ์คํธ๋ถ์
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋ฅ๋ฌ๋
- react
- ๊นํ๋ธ
- ์๋ง์กด์น์๋น์ค
- ์ฝํ
- AWS
- ์๊ณ ๋ฆฌ์ฆ
- DFS
Archives
- Today
- Total
DATA101
Entity ๊ฐ๋ ๋ฐ ๋งตํ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์! ๋ณธ๋ฌธ
728x90
๋ฐ์ํ
๐ฅ ๋ชฉํ
Entity์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ๋งตํ ๋ฐฉ๋ฒ์ ์ดํดํ๋ค.
1. Entity ๊ฐ๋
- 2์ฐจ์ Table ์์ฒด๋ฅผ Entity๋ผ๊ณ ๋ถ๋ฆ
- Table ๋ด ๊ฐ Row๊ฐ Entity ๊ฐ์ฒด์ด๋ฉฐ, ๊ฐ Column์ด Field
- Entity๋ Table๊ณผ 1๋1 ๋์๋๋ค๊ณ ํํ
- Table ๋ด ๋ชจ๋ Column์ Field๋ก ๋ฐ๋์ ์ ์ํด์ผ ํจ
- Entity ํด๋์ค๋ ๋ค๋ฅธ ํด๋์ค๋ฅผ ์์๋ฐ๊ฑฐ๋ ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด๋ก์ ์ฌ์ฉ๋ถ๊ฐ
2. Entity ํด๋์ค ์ฌ์ฉ ๊ท์น
- Entity ํด๋์ค๋ ํด๋์ค ์์ฑ ์ Entity Annotation์ ๋ถ์ฌ ํด๋น ํด๋์ค๊ฐ Entity ํด๋์ค์์ ๋ช ์ํด์ผ ํจ
- Entity ํด๋์ค์์ Domain ๋ก์ง๋ง ๊ตฌํํ๊ณ Presentation ๋ก์ง์ ๊ตฌํํ์ง ์์
- Proxy ์์ฑ์ ์ํด ๊ธฐ๋ณธ ์์ฑ์๋ ํ์์ด๋ฉฐ, public(์ง์) ๋๋ protected ์์ฑ์์ด์ด์ผ ํจ(private ์ฌ์ฉ๋ถ๊ฐ)
- final, enum, interface, inner ํด๋์ค๋ Entity๋ก ์ฌ์ฉ๋ถ๊ฐ
- DB Table์ ์ ์ฅํ Field๋ final ์ ์ธ ๋ถ๊ฐ
- Setter ์ฌ์ฉ ์ง์
- Entity ํด๋์ค ์์ฑ ์ Getter๋ ๋ง๋ค์ด์ผ ํ์ง๋ง Entity ์ผ๊ด์ฑ ๋ณด์กด์ ์ํด Setter ์ฌ์ฉ์ ์ง์
- ๋ฌด๋ถ๋ณํ Setter ์ฌ์ฉ์ Entity ํด๋์ค์ Instance๊ฐ ์ธ์ , ์ด๋์์ ๋ณ๊ฒฝ๋์๋์ง ํ์ ํ๊ธฐ ์ด๋ ค์(์ฐธ๊ณ ๋ฌธํ)
- Setter ๋์ Builder ํจํด์ ํ์ฉํ๋ฉด ๋ฉค๋ฒ ๋ณ์๊ฐ ๋ง์์ ธ๋ ํ์ํ ๋ฐ์ดํฐ๋ง Field์ ๋ฃ๋ ๊ฒ์ด ์ฉ์ด
2.1. Annotation(i.e., @)
@Entity
- ํด๋์ค ์ ์ธ ์ Annotation์ ์ ๋ ฅํ๋ฉด ํด๋น ํด๋์ค๊ฐ Entity ํด๋์ค์์ ๋ช ์ํ๋ ์ญํ
- Entity ํด๋์ค๋ JPA์์ ์ ์ํ ํ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Table ์์ฑ
@Builder
- @AllArgsConstructor๋ฅผ ์ฌ์ฉํ ๊ฒ์ฒ๋ผ Entity ๊ฐ์ฒด ์์ฑ ์ Builder pattern ์์ฑ
@AllArgsConstructor
- ๋ชจ๋ Field๋ฅผ Parameter๋ก ๋ฐ๋ ์์ฑ์ ์์ฑ
- ๋๋ฒ๊น ์ด๋ ค์ ๋ฐ ๋ค์ํ ๋ฒ๊ทธ ์์ฑ์ ์ผ๊ธฐํ๋ฏ๋ก ํด๋น annotation ์ฌ์ฉ์ ์ง์(์ฐธ๊ณ ๋ฌธํ)
- ์์ฑ์๋ฅผ ์ง์ ๋ง๋ค๊ณ ์์ฑ์์ @Builder๋ฅผ ๋ถ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅ
@RequiredArgsConstructor
- final ๋๋ @NonNull์ ํด๋นํ๋ Field๋ง Parameter๋ก ๋ฐ๋ ์์ฑ์ ์์ฑ(null์ธ ๊ฒฝ์ฐ NullPointerException ๋ฐ์)
- ์์ฑ์ ์ฃผ์ ์ ๋ถํ์ํ ์ฝ๋ ์์ฑ์ ์ค์ฌ ํด๋ฆฐ ์ฝ๋ ์์ฑ ์ ์ ์ฉํจ
- ๋๋ฒ๊น ์ด๋ ค์ ๋ฐ ๋ค์ํ ๋ฒ๊ทธ ์์ฑ์ ์ผ๊ธฐํ๋ฏ๋ก ํด๋น annotation ์ฌ์ฉ์ ์ง์(์ฐธ๊ณ ๋ฌธํ)
@NoArgsConstructor
- Parameter ์๋ ๊ธฐ๋ณธ ์์ฑ์ ์์ฑ
- ์ด๊ธฐ๊ฐ์ด final ํ๋์ธ ๊ฒฝ์ฐ ์ปดํ์ผ ์๋ฌ ๋ฐ์
์์ฑ
- access
- ์ญํ
- ์์ฑ๊ฐ์ด protected์ธ ๊ฒฝ์ฐ(๊ถ์ฅ), ์ธ๋ถ์์ ๋ฌด๋ถ๋ณํ๊ฒ ํด๋น Entity์ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์ง
- ์์ฑ๊ฐ์ด public์ธ ๊ฒฝ์ฐ(์ง์), ๊ฐ์ฒด ์์ฑ ์ ์์ ์ฑ ์ ํ ์ ๋ฐ
- ์์ฑ ์์: @NoArgsConstructor(access = AccessLevel.PROTECTED)
- ์ญํ
@Getter
- ํ๋๊ฐ ์กฐํ๋ฅผ ์ํ Getter ์๋ ์์ฑ
@ToString
- ํด๋์ค์์ ์ ์ธํ ๋ชจ๋ ํ๋๋ฅผ ์ถ๋ ฅํ๋ toString ๋ฉ์๋ ์์ฑ
- exclude ์์ฑ์ ์ฌ์ฉํ๋ฉด ํน์ง Field๋ ์ถ๋ ฅํ์ง ์์ ์ ์์
@Table
- Entity์ Mapping ํ Table ์ง์
์์ฑ
- name(String, Optional)
- ์ญํ : Mapping ํ ํ ์ด๋ธ ์ด๋ฆ ์ง์
- ๊ธฐ๋ณธ๊ฐ: Entity ์ด๋ฆ
- ์์ฑ ์์: @Table(name = "ํ ์ด๋ธ ์ด๋ฆ")
- catalog(String, Optional)
- ์ญํ : DB catalog mapping
- catalog(String, Optional)
- ์ญํ : DB schema mapping
- schema(String, Optional)
- ์ญํ : DB schema mapping
- indexes(Index[], Optional)
- ์ญํ : DB index mapping
- uniqueConstraints(UniqueConstraint[], Optional)
- ์ญํ : DDL ์์ฑ ์ Unique ์ ์ฝ์ฌํญ ์ง์
@Id
- Entity์ Primary Key ๊ฐ ์ง์
@GeneratedValue(strategy = GenerationType.IDENTITY)
- MySQL์์์ Auto Increment์ ๊ฐ์ ์ญํ ์ํ
@Column
์์ฑ
- name(String, Optional)
- ์ญํ : Column ์ด๋ฆ ์ง์
- ๊ธฐ๋ณธ๊ฐ: ํด๋น ๊ฐ์ฒด ์ด๋ฆ
- nullable(Boolean, Optional)
- ์ญํ : ํด๋น Field ๊ฐ์ด ๋ฐ๋์ ์ ๋ ฅ๋ฐ์์ผ ํ ์ง ์ฌ๋ถ ๊ฒฐ์
- ๊ธฐ๋ณธ๊ฐ: true
- length(int, Optional)
- ์ญํ : ๋ฌธ์์ด ๊ธธ์ด ์ ํ
- ํน์ง: String type์์๋ง ์ฌ์ฉ๊ฐ๋ฅ
@ManyToOne
- ํ๋์ Entity์ ๋ค๋ฅธ N๊ฐ์ Entity ๊ฐ ๊ด๊ณ ํ์ฑ ์ง์
2.2. Entity ํด๋์ค ์์ฑ ์์
- ์ ๊ทธ๋ฆผ 1 ๋ด Not Null ์์ฑ์ ๊ฐ๋ id, name, age, salary๋ผ๋ Column์ ๊ฐ๋ employee๋ผ๋ Table์ด ์๋ค๊ณ ํ๋ฉด, ์๋์ ๊ฐ์ด employee Entity๋ฅผ ์ ์ํ ์ ์์
@Entity
@Table(name = "employee")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; // ํ์ ์
๋ ฅ & 10๊ธ์ ์ด๊ณผ ์
๋ ฅ๋ถ๊ฐ
@Column(nullable = false, length = 10)
private String name;
@Column
private int age; // ๊ฐ์ฒด ์ด๋ฆ๊ณผ ๋ค๋ฅด๊ฒ column ์ด๋ฆ ๊ฐ๋ณ์ง์
@Column(name = "salary")
private int pay;
}
ํฌ์คํ
๋ด์ฉ์ ์ค๋ฅ๊ฐ ์๋ค๋ฉด ์๋์ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์!
๊ฐ์ฌํฉ๋๋ค :)
728x90
๋ฐ์ํ