BackEnd/JPA

[JPA] ์ž๋ฐ”์—์„œ ๋ณตํ•ฉํ‚ค ์‚ฌ์šฉํ•˜๊ธฐ

hyunki.Dev 2023. 9. 17. 00:33

๐Ÿ“Œ ๋“ค์–ด๊ฐ€๋ฉฐ

ํ…Œ์ด๋ธ”์„ ์„ค๊ณ„ํ•˜๋‹ค ๋ณด๋ฉด ์ฃผ๋กœ detail ๊ด€๋ จ ํ…Œ์ด๋ธ”์— id + ์ˆœ๋ฒˆ์œผ๋กœ ๋ณตํ•ฉํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ณตํ•ฉํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ์ž๋ฐ”์—์„œ Entity๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•์ค‘ ๊ฐ€์žฅ ํ”ํžˆ ์“ฐ์ด๋Š” @EmbeddedId ์–ด๋…ธํ…Œ์ด์…˜์— ๋Œ€ํ•ด ํฌ์ŠคํŒ…ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ“Œ EmbeddedId

Embeddable Object๋ฅผ Id๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฃผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋”ฉํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

@Embeddable
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class OrderItemId implements Serializable {

    @Column(name = "ord_id")
    private Long orderId;

    @Column(name = "ord_srnm")
    private int orderSerialNo;
    
 }

 

 

@Embeddable ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•˜๋ฉด ID์—ญํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ

๋‹ค๋ฅธ ์—”ํ‹ฐํ‹ฐ์—์„œ ํ•„๋“œ๋กœ๋„ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 

์ด๋ ‡๊ฒŒ ์ƒ์„ฑํ•œ ๋ณตํ•ฉํ‚ค๋ฅผ ํ™œ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๊ณณ์—์„œ @EmbeddedId ์–ด๋…ธํ…Œ์ด์…˜๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

@Entity
@Table(name = "example_table")
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class ExampleTable {

    @EmbeddedId
    private OrderItemId orderItemId;
    
    
}

 

์ดํ›„๋กœ ํ•ด๋‹น ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๋‹ค๋ฅธ ํ•„๋“œ๋“ค์„ ์•„๋ž˜์— ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด 

๋ณตํ•ฉํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ ํ…Œ์ด๋ธ”์„ ์ž๋ฐ”์˜ Entity ํ˜•์‹์œผ๋กœ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.