# [JPA] Entity Mapping : ํ•„๋“œ โžก๏ธ ์ปฌ๋Ÿผ ๋งคํ•‘
Study Repository

[JPA] Entity Mapping : ํ•„๋“œ โžก๏ธ ์ปฌ๋Ÿผ ๋งคํ•‘

by rlaehddnd0422

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” JPA๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํ•„๋“œ์™€ ์ปฌ๋Ÿผ ๋งคํ•‘์šฉ ์–ด๋…ธํ…Œ์ด์…˜์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

@Column

๊ธฐ๋ณธ์ ์œผ๋กœ ์—”ํ‹ฐํ‹ฐ์˜ ํ•„๋“œ์™€ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์„ ๋งคํ•‘ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ž…๋‹ˆ๋‹ค.

์—”ํ‹ฐํ‹ฐ์˜ ํ•„๋“œ์— @Column์„ ์ง€์ •ํ•˜๊ณ  name ์†์„ฑ์— ๋งคํ•‘ํ•  ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ๋ช…์„ ์ง€์ •ํ•ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

+ nullable ์†์„ฑ์„ false๋กœ ์„ค์ •ํ•˜๋ฉด DDL ์ƒ์„ฑ ์†์„ฑ์— not null ์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

 

int์™€ ๊ฐ™์ด ์ž๋ฐ”์˜ ๊ธฐ๋ณธํƒ€์ž…์ธ ๊ฒฝ์šฐ null ๊ฐ’์„ ์ž…๋ ฅํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ” ๊ธฐ๋ณธํƒ€์ž…์„ DDL๋กœ ์ƒ์„ฑํ•  ๋•Œ๋Š” not null ์ œ์•ฝ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

ํ•„๋“œ๋ช…๊ณผ ์ปฌ๋Ÿผ๋ช…์ด ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ @Column์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Enumerated

์ž๋ฐ”์˜ enum ํƒ€์ž…์„ ๋งคํ•‘ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜

์˜ˆ์‹œ 

@Enumerated
private RoleType roleType;
  • @Enumerated ์†์„ฑ์— EnumType.STRING์œผ๋กœ ์ง€์ • ์‹œ ENUM ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ
  • @Enumerated ์†์„ฑ์— EnumType.ORDINAL์œผ๋กœ ์ง€์ • ์‹œ ENUM์˜ ์ธ๋ฑ์Šค ๊ฐ’์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ

@Temporal

๋‚ ์งœ ํƒ€์ž…์„ ๋งคํ•‘ํ•  ๋–„ ์‚ฌ์šฉํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜ ์ž…๋‹ˆ๋‹ค.

@Temporal(TemporalType.TIMESTAMP)
private Date createdDate;

@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;

@Temporal ์ƒ๋žต ์‹œ ์ž๋ฐ”์˜ Date์™€ ๊ฐ€์žฅ ์œ ์‚ฌํ•œ timestamp๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.

@Lob

 

@Transient

๋งคํ•‘ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ํ•„๋“œ์— ์„ค์ •ํ•˜๋Š” ์• ๋…ธํ…Œ์ด์…˜์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜์ง€๋„ ์•Š๊ณ , ์กฐํšŒ๋˜์ง€๋„ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด์— ์ž„์‹œ๋กœ ์–ด๋–ค ๊ฐ’์„ ๋ณด๊ด€ํ•˜๊ณ  ์‹ถ์„ ๋–„ ์‚ฌ์šฉํ•˜๋Š” ํ•„๋“œ์— ๋ถ™์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

@Transient
private Integer temp;

@Access

ํด๋ž˜์Šค ๋ ˆ๋ฒจ์— ์„ค์ •ํ•จ์œผ๋กœ์จ JPA๊ฐ€ ์—”ํ‹ฐํ‹ฐ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. 

@Access๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด @Id์˜ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ ‘๊ทผ๋ฐฉ์‹์ด ์ž๋™์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

 

@Id๊ฐ€ ํ•„๋“œ์— ์žˆ์œผ๋ฉด?

@Id
private Long id;

@Access(AccessType.FIELD)๊ฐ€ ์ž๋™์œผ๋กœ ์ ์šฉ๋˜๊ณ ,

 

@Id๊ฐ€ ํ”„๋กœํผํ‹ฐ์— ์žˆ์œผ๋ฉด

@Id
public String getId(){
	return id;
}

@Access(AccessType.PROPERTY)๊ฐ€ ์ž๋™์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

@Entity
@Access(AccessType.FIELD)
public class Member{

	@Id
    private String id;
    
    private String data1;
   	
    ...
}
  • ํ•„๋“œ ์ ‘๊ทผ : @Access(AccessType.FIELD) / ํ•„๋“œ์— ์ง์ ‘ ์ ‘๊ทผ. ํ•„๋“œ ์ ‘๊ทผ ์ œ์–ด์ž๊ฐ€ private์—ฌ๋„ ์ ‘๊ทผ ๊ฐ€๋Šฅ!
  • ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ : @Access(AccessType.PROPERTY) / Getter๋ฅผ ์‚ฌ์šฉํ•œ ์ ‘๊ทผ

<์ฐธ๊ณ ์ž๋ฃŒ>

 

 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Study Repository

rlaehddnd0422

ํ™œ๋™ํ•˜๊ธฐ