Bibi's DevLog π€π
[Spring Data JDBC, JPA] @Embededλ?, @Embeded μ¬μ©νκΈ° λ³Έλ¬Έ
[Spring Data JDBC, JPA] @Embededλ?, @Embeded μ¬μ©νκΈ°
λΉλΉ bibi 2021. 4. 30. 19:43@Embeded
μ°κ΄ μλ 컬λΌλ€μ λ¬Άλ ν μ΄λΈμ μλ‘ λ§λ€μ§ μκ³ , @Embededλ₯Ό μ¬μ©ν΄ λ§μΉ νλμ ν μ΄λΈμ λ§λ κ²μ²λΌ μ¬μ©νλ λ°©λ²μ΄λ€!!
[JPA] @Embeded
, μλ² λλ νμ
https://velog.io/@conatuseus/JPA-%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C-%ED%83%80%EC%9E%85embedded-type-8ak3ygq8wo μ μ μ€λͺ λμ΄ μμ΄ μμ½ μ λ¦¬λ§ νμ΅λλ€.πββοΈ
JPAμμ μλ² λλ νμ (λ³΅ν© κ° νμ )μ΄λ μλ‘μ΄ κ° νμ μ μ§μ μ μν΄ μ¬μ©νλ κ²μ΄λ€.
μλ² λλ νμ μμ int, Stringμ²λΌ κ° νμ μ΄λ€.
β μλ² λλ νμ μ μ°λ μ΄μ
β μμΈν λ°μ΄ν°λ€μ κ΄λ ¨ μλ νμ μΌλ‘ λ¬Άμ΄ κ°μ²΄μ§ν₯μ μ΄κ³ μμ§λ ₯ λκ² λ§λ€κΈ° μν΄.
μλ₯Ό λ€μ΄..
νμ μν°ν°μ "μ΄λ¦, 근무 μμμΌ, 근무 μ’ λ£μΌ, μ£Όμ μ/κ΅°/ꡬ, μ£Όμ λ²μ§, μ£Όμ μ°νΈλ²νΈ"μ κ°μ μμ±λ€μ΄ μλ€λ©΄
μλ‘ κ΄λ ¨μλ μ 보λ₯Ό λ¬Άμ΄ "μ΄λ¦, 근무기κ°, μ£Όμ"λ‘ κ΄λ¦¬νλ κ²μ΄ λ λ«λ€.
μ΄ λ μμΈ λ°μ΄ν°λ€μ λ¬Άλ "근무기κ°", "μ£Όμ"λ₯Ό μλ² λλ νμ μΌλ‘ μ μΈν΄ μ¬μ©ν μ μλ€.
β μλ² λλ νμ μ μ₯μ
- μ¬μ¬μ©μ±
- λμ μμ§λ
- ν΄λΉ μλ² λλ νμ λ§ μ¬μ©νλ λ©μλ μμ± κ°λ₯
β μλ² λλ νμ μ¬μ©λ²
@Embeddable
: κ° νμ μ μ μνλ κ³³μ νμ@Embedded
: κ° νμ μ μ¬μ©νλ κ³³μ νμ- μλ² λλ νμ μ κΈ°λ³Έ μμ±μκ° νμ
- μλ² λλ νμ μ μ¬μ©νκΈ° μ κ³Ό νμ 맡ννλ ν μ΄λΈμ κ°λ€ - μλ² λλ νμ μ μν°ν°μ κ°μΌ λΏμ
κΈ°μ‘΄
Dish
μ ν¬ν¨λμ΄ μλ image κ΄λ ¨ μμ±λ€μ λΆλ¦¬ν΄ κ΄λ¦¬νλ, DBν μ΄λΈμ λ°λ‘ λ§λ€κ³ μΆμ§ μμ λ, μλμ κ°μ΄ μ²λ¦¬νλ€.(λΆλ¦¬ν μμ±λ€ :
mainImage
,topImage
,thumbImages
,detailSection
)
Spring Data JDBCμμλ μλμ κ°μ΄ Embededλ₯Ό μ¬μ©νλ€.
Dish.java
public class Dish {
@Id
private String id;
private String alt;
private String deliveryType;
private String title;
private String description;
private String normalPrice;
private String sellingPrice;
private String badge;
private Long categoryId;
private String deliveryInfo;
private String deliveryFee;
private int stock;
private String point;
@Embedded.Nullable
private Image image;
// ...
}
Image.java
public class Image {
private String mainImage;
private String topImage;
private String thumbImages;
private String detailSection;
public String getMainImage() {
return mainImage;
}
public String getTopImage() {
return topImage;
}
public String getThumbImages() {
return thumbImages;
}
public String getDetailSection() {
return detailSection;
}
}
Image
κ°μ²΄λ₯Ό μ¬μ©ν λλ @Embeded
μ²λ¦¬ν μμ μν°ν°μΈ Dish
κ°μ²΄λ₯Ό νμ©νλ€.
public static DishResponseDto of(Dish dish) {
Image image = dish.getImage();
return new DishResponseDto(dish.getId(), image.getMainImage(), dish.getAlt(),
dish.getDeliveryType(), dish.getTitle(), dish.getDescription(),
dish.getNormalPrice(), dish.getSellingPrice(), dish.getBadge());
}
JPAμμλ μλμ κ°μ΄ Embededλ₯Ό μ¬μ©νλ€.
μλ² λλ νμ μ¬μ© μ
// μλ² λλ νμ
μ¬μ©νμ§ μμμ λ
@Entity
public class Member {
@Id @GeneratedValue
private Long id;
private String name;
// 근무 κΈ°κ°
@Temporal(TemporalType.DATE)
Date startDate;
@Temporal(TemporalType.DATE)
Date endDate;
// μ§ μ£Όμ νν
private String city;
private String street;
private String zipcode;
// ...
}
μλ² λλ νμ μ¬μ© ν
@Entity
public class Member {
@Id @GeneratedVAlue
private Long id;
private String name;
@Embedded
private Period workPeriod; // 근무 κΈ°κ°
@Embedded
private Address homeAddress; // μ§ μ£Όμ
}
@Embeddable
public class Peroid {
@Temporal(TemporalType.DATE)
Date startDate;
@Temporal(TemporalType/Date)
Date endDate;
// ...
public boolean isWork (Date date) {
// .. κ° νμ
μ μν λ©μλλ₯Ό μ μν μ μλ€
}
}
@Embeddable
public class Address {
@Column(name="city") // 맀νν μ»¬λΌ μ μ κ°λ₯
private String city;
private String street;
private String zipcode;
// ...
}
β μν°ν°μ μλ² λλ νμ μ κ΄κ³
- UML : μ»΄ν¬μ§μ (composition, ꡬμ±) κ΄κ³
- νμ΄λ²λ€μ΄νΈ : μ»΄ν¬λνΈ(components, ꡬμ±μμ) κ΄κ³
μλλ μ»΄ν¬μ§μ
κ΄κ³ UML κ·Έλ¦Ό.
'π₯ BE λ°±μλ > Spring μ€νλ§' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[SpringDataJDBC] MapμΌλ‘ 1:N κ΄κ³ 맡ννκΈ° (0) | 2021.04.30 |
---|---|
AWS EC2 (Ubuntu) μλ²μ μ€νλ§ μ± λ°°ν¬ κ³Όμ μ 리 (0) | 2021.04.30 |
[Spring] HTTP method - PUT (0) | 2021.04.06 |
[JPA] CrudRepositoryμ λ©μλ & JpaRepositoryμ CrudRepositoryμ μ°¨μ΄ (0) | 2021.03.20 |
@RequestMapping μΌλ‘ μ€λ³΅URL μ κ±°νκΈ° (0) | 2021.03.17 |