๐ปUMC ํ๋์ ํ๋ฉด์
JPA๋ก Database DML ์์ ์ ํ๋ ์ค,
@Id ์ด๋ ธํ ์ด์ ์ ํ ํด๋์ค์ ์ฌ๋ฌ๊ฐ๋ฅผ ์์ฑํ๋ ์ค๋ฅ๊ฐ ๋ฌ๋ค๐ฉ
๊ตฌ๊ธ๋ง ํด๋ณด๋, 2๊ฐ ์ด์์ composite primary key์์๋
@IdClass ํน์ @EmbeddedId๋ฅผ ์ฌ์ฉํด์ผํ๋ค๊ณ ํ๋ค.....(๋ณต์กํด ์ผ์ ๐)
๋๋ ๊ทธ ์ค์์๋ ๊ทธ๋๋ง ์ข ๊ฐ๋จํด๋ณด์๋ @EmbeddedId๋ฅผ ์ฌ์ฉํด๋ณด๊ณ ์ ํ๋ค..(์ ๋ฒ์ ๊ทธ๋๋ ๊ณต๋ถ ํด๋ด์ Embedded ๊ฐ๋
์ ์๊ธฐ์,,)
Course Strong Entity์ Section Week Entity๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. Section table์์๋ ์์ ์ ๋ํ๋ด๋ identifier attribute์ Course์ PK๊ฐ ๋ชจ๋ PK๋ก ์ ์ฅ๋๋ Composite PK ์ผ ๊ฒ์ด๋ค.
์ด๋, JPA๋ก์จ ๋ํ๋ด๋ณด๊ณ ์ ํ๋ค.
๋จผ์ composite primary key๋ฅผ ์ ์ฅํ embedded class๋ฅผ ์์ฑํ๋ค.
์ด ๋, Serializable์ ๋ฌด์กฐ๊ฑด ์์ ๋ฐ์์ผ ํ๋ค.
@NoArgsConstructor
@Embeddable
public class SectionEmbeddedId implements Serializable {
@Column
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long sectionIdx;
@ManyToOne
@JoinColumn(name = "courseIdx", nullable = false)
private courseEntity course;
}
๊ทธ ํ, ์ค์ Entity Class์ ์ด์ ๊ฐ์ด ์์ฑํ๋ฉด ๋
@Entity
@NoArgsConstructor
@Table(name = "section")
public class SectionEntity {
@EmbeddedId
private CourseEmbeddedId courseEmbeddedId;
@Column(nullable = true, length = 45)
private String semesterYear;
}
โป ์ table์ ์์๋ฅผ ๋ํ๋ธ ๊ฒ์ด์ง, ์ค์ ๋ก๋ pk ๋ ์์ด์ผ ํจ,,(course table์๋)
[์ถ์ฒ]