ํ๋ก์ Team์ ์ํด์๋ Member ๋ฅผ ์กฐํํ ์ Team๊น์ง ์กฐํํ ํ์๊ฐ ์์๊น? ๋น์ง๋์ค ๋ก์ง์์ ํ์ํ์ง ์์ ๋๊ฐ ์๋๋ฐ ํญ์ Team์ ํจ๊ป ์กฐํํ๋ค๋ฉด ๋ญ๋น๊ฐ ๋ฐ์๋๋ค. ์ด ๋ญ๋น๋ฅผ ํ์ง ์๊ธฐ ์ํด ํ๋ก์๋ผ๋ ๊ฐ ๋ฉฐ์ผ๋ก ํด๊ฒฐํ๋ค. - ์ค์ ํด๋์ค๋ฅผ ์์ ๋ฐ์์ ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ ๊ฒ ๋ชจ์์ด ๊ฐ๋ค - ์ฌ์ฉํ๋ ์
์ฅ์์๋ ์ง์ง, ๊ฐ์ง ๊ฐ์ฒด์ธ์ง ๊ตฌ๋ถํ์ง ์๊ณ ์ฌ์ฉํ๋ฉด ๋๋ค. - ํ๋ก์ ๊ฐ์ฒด๋ ์ค์ ๊ฐ์ฒด์ ์ฐธ์กฐ๋ฅผ ๋ณด๊ด -> ํ๋ก์ ๊ฐ์ฒด๋ฅผ ํธ์ถํ๋ฉด ํ๋ก์ ๊ฐ์ฒด๋ ์ค์ ๊ฐ์ฒด์ ๋ฉ์๋ ํธ์ถ em.find() : ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํตํด์ ์ค์ ์ํฐํฐ ๊ฐ์ฒด ์กฐํ em.getReference() : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํ๋ฅผ ๋ฏธ๋ฃจ๋ ๊ฐ์ง(ํ๋ก์) ์ํฐํฐ ๊ฐ์ฒด ์กฐํ // ํธ์ถํ ์๊ฐ ์ฟผ๋ฆฌ ์คํ Member findMember..
์ ์ฒด ๊ธ
์์๊ด๊ณ ๋งคํ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์์ ๊ด๊ณ๊ฐ ์๋ค.(์ํผํ์
์๋ธํ์
๊ด๊ณ๋ผ๋ ๋ชจ๋ธ๋ง ๊ธฐ๋ฒ์ด ๊ฐ์ฒด ์์๊ณผ ์ ์ฌํ๋ค) ์ํผํ์
์๋ธํ์
๋
ผ๋ฆฌ ๋ชจ๋ธ์ ์ค์ ๋ฌผ๋ฆฌ ๋ชจ๋ธ๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ 1. ๊ฐ๊ฐ ํ
์ด๋ธ๋ก ๋ณํ -> ์กฐ์ธ ์ ๋ต (์ ์) - ํ
์ด๋ธ ์ ๊ทํ - ์ธ๋ ํค ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด ํ์ฉ ๊ฐ๋ฅ - ์ ์ฅ๊ณต๊ฐ ํจ์จํ - ์กฐํ์ ์กฐ์ธ์ ๋ง์ด ์ฌ์ฉ -> ์ฑ๋ฅ ์ ํ, ์กฐํ ์ฟผ๋ฆฌ๊ฐ ๋ณต์กํจ - ๋ฐ์ดํฐ ์ ์ฅ์ INSERT ์ฟผ๋ฆฌ๊ฐ 2๋ฒ ํธ์ถ ๋๋ค. ๋น์ง๋์ค์ ์ผ๋ก ์ค์ํ๊ณ ๋ณต์กํ ๋ ์ ํ! ๋ถ๋ชจ ํด๋์ค ์ค์ @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn ์์ ํด๋์ค ์ค์ -> dtype์ ํ์๋ ์ด๋ฆ์ ์ ํด ์ค ๊ฒฝ์ฐ @DiscriminatorVa..
์ฐ๊ด๊ด๊ณ ๋งคํ์ ๊ณ ๋ ค์ฌํญ 3๊ฐ์ง 1. ๋ค์ค์ฑ 2. ๋จ๋ฐฉํฅ, ์๋ฐฉํฅ 3. ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ - ๊ฐ์ฒด ์๋ฐฉํฅ ๊ด๊ณ๋ ์ฐธ์กฐ๊ฐ 2๊ตฐ๋ฐ ์๊ธฐ ๋๋ฌธ์ ๋์ค ํ
์ด๋ธ์ ์ธ๋ ํค๋ฅผ ๊ด๋ฆฌํ ๊ณณ์ ์ง์ ํด์ผํจ - ์ธ๋ ํค๋ฅผ ๊ด๋ฆฌํ๋ ์ฐธ์กฐ - ์ฃผ์ธ์ ๋ฐ๋ํธ : ์ธ๋ ํค์ ์ํฅ์ ์ฃผ์ง ์์, ๋จ์ ์กฐํ ๋ค๋์ผ[N:1] ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํจ ๋จ๋ฐํฅ ์๋์ ๊ฐ์ด [N]์์ ์ธ๋ ํค๋ฅผ ๊ด๋ฆฌํ๊ณ Team์ ์กฐํ ํ๊ณ ์ถ๊ฐํ ์ ์๋ค. Team์ ์๋ ์กฐํํ์ง ๋ชปํจ -> Team์์ Member์ ์กฐํํ๋์ผ์ด ๋น๋ฒํ๋ค๊ณ ํ๋ฉด -> ์๋ฐํฅ ์ผ๋ก ๋งคํํด์ฃผ๋๊ฒ ์ข์. ์๋ฐํฅ ๋จ๋ฐํฅ์์ TEAM์ด MEMBER๋ฅผ mapped by ๋ฅผ ์ถ๊ฐํ์ฌ MEMBER๋ฅผ ์กฐํํ ์ ์๋ค. (์ฝ๊ธฐ ์ ์ฉ) ์ผ๋๋ค[1:N] 1์ด ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ด๋ค. ๋จ๋ฐฉํฅ TEAM ์์..
๋ชฉํ - ๊ฐ์ฒด์ ํ
์ด๋ธ ์ฐ๊ด๊ด๊ณ์ ์ฐจ์ด๋ฅผ ์ดํด - ๊ฐ์ฒด์ ์ฐธ์กฐ์ ํ
์ด๋ธ์ ์ธ๋ ํค๋ฅผ ๋งคํ ๊ฐ์ฒด์ ํ
์ด๋ธ ์ฐ๊ด๊ด๊ณ์ ์ฐจ์ด๋ฅผ ์ดํด ๊ฐ์ฒด๋ฅผ ํ
์ด๋ธ์ ๋ง์ถ์ด ๋ชจ๋ธ๋ง ํ์ ๋ ๋ฌธ์ ์ (์ฐธ์กฐ ๋์ ์ ์ธ๋ ํค๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉ) ํ๋ ฅ ๊ด๊ณ๋ฅผ ๋ง๋ค ์ ์๋ค. ํ
์ด๋ธ์ ์ธ๋ ํค๋ก ์กฐ์ธ์ ์ฌ์ฉํด์ ์ฐ๊ด๋ ํ
์ด๋ธ์ ์ฐพ๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ด ๋ฒ๊ฑฐ๋ก์ด ์ฝ๋๊ฐ ๋ฐ์๋๋ค. Team team = new Team(); team.setName("TeamA"); em.persist(team); Member member = new Member(); member.setUsername("member1"); // ์ธ๋ํค ์๋ณ์๋ฅผ ์ง์ ๋ค๋ฃฌ๋ค. member.setTeamId(team.getId()); em.persist(member); // ๋ฉค๋ฒ์ ..
๊ฐ์ฒด์ ํ
์ด๋ธ ๋งคํ @Entity - @Entity๊ฐ ์ ์๋์ด์๋ ํด๋์ค๋ JPA๊ฐ ๊ด๋ฆฌํ๋ค. - ๊ธฐ๋ณธ ์์ฑ์๊ฐ ๊ผญ ์์ด์ผ ํ๋ค. - ์์ฑ: name ->JPA์ ์ฌ์ฉํ ์ํฐํฐ ์ด๋ฆ์ ์ง์ ํ๋ค, ๊ธฐ๋ณธ๊ฐ : ํด๋์ค ์ด๋ฆ์ ๊ทธ๋๋ก ์ฌ์ฉ @Table - name, catalog, schema ๋ฑ๋ฑ. . ํ๋์ ์ปฌ๋ผ ๋งคํ @Column ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปฌ๋ผ๋ช
์ ์ค์ ํด์ค ์ ์๋ค. unique(์ค๋ฌด์์ ์ ์ฌ์ฉํ์ง ์๋๋ค -> ์ ๋ํฌ ์ ์ฝ์กฐ๊ฑด ์ด๋ฆ์ ์ค์ ํ ์ ์๋ค ๋์ @Table(uniqueCons.. ์ฌ์ฉ), length ๋ฑ ์ค์ ํ ์ ์๋ค. @Temporal ๋ ์ง ํ์
๋งคํ ํ์ง๋ง LocalDate, LocalDateTime์ ์ฌ์ฉํ ๋๋ ์๋ต ๊ฐ๋ฅํ๋ค. @Enumerated enum ํ์
๋งคํ default..
JPA์์ ๊ฐ์ฅ ์ค์ํ 2๊ฐ์ง - ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋งคํํ๊ธฐ - ์์์ฑ ์ปจํ
์คํธ ์์์ฑ ์ปจํ
์คํธ๊ฐ ๋ญ๊น? JPA๋ฅผ ์ดํดํ๋๋ฐ ๊ฐ์ฅ ์ค์ํ ์ฉ์ด์ด๋ค. "์ํฐํฐ๋ฅผ ์๊ตฌ ์ ์ฅํ๋ ํ๊ฒฝ"์ด๋ผ๋ ๋ป. -> EntityManager.persist(entity); - persist๋ ์ฌ์ค DB์ ์ ์ฅํ๋๊ฒ ์๋๊ณ Entity๋ฅผ ์์์ฑ ์ปจํ
์คํธ์ ์ ์ฅํ๋ค๋ ๋ป์ด๋ค. - ๋
ผ๋ฆฌ์ ์ธ ๊ฐ๋
์ผ๋ก ๋์ ๋ณด์ด์ง ์๋๋ค. EntityManager๋ฅผ ํตํด์ ์์์ฑ ์ปจํ
์คํธ์ ์ ๊ทผํ๋ค. - ์ฌ๋ฌ๊ฐ์ EntityManager๊ฐ ํ๋์ ์์์ฑ ์ปจํ
์คํธ๋ฅผ ๋ฐ๋ผ๋ณธ๋ค. ์ํฐํฐ์ ์๋ช
์ฃผ๊ธฐ๋ ์ด๋ป๊ฒ ๋ ๊น? ๋น์์ - ์์์ฑ ์ปจํ
์คํธ์ ์ ํ ๊ด๊ณ๊ณผ ์๋ ์๋ก์ด ์ํ ์์ - ์์์ฑ ์ปจํ
์คํธ์ ๊ด๋ฆฌ๋๋ ์ํ ์ค์์ - ์์์ฑ ์ปจํ
์คํธ์ ์ ์ฅ๋..
์๋์ ๊ฐ์ด ์์ฑํ์ ๋ ์ ์ฅ์ด ๋ ๊น? ์๋ฌ๊ฐ ์๊ธด๋ค. ์๋ํ๋ฉด JPA๋ ํธ๋ ์ ์
์ด๋ ๋จ์๊ฐ ๋งค์ฐ ์ค์ํ๊ธฐ ๋๋ฌธ์ JPA์ ๋ชจ๋ ๊ธฐ๋ฅ์ ํธ๋ ์ ์
์์์ ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค. EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); Member member = new Member(); member.setId(1L); member.setName("AE"); em.persist(member); em.close(); emf.close(); ํธ๋ ์ ์
์ ์ถ๊ฐํ ์ฝ๋ EntityManagerFactory emf = Persistence.createEntityMa..
www.inflearn.com/course/ORM-JPA-Basic/dashboard ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ - ์ธํ๋ฐ | ๊ฐ์ JPA๋ฅผ ์ฒ์ ์ ํ๊ฑฐ๋, ์ค๋ฌด์์ JPA๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ธฐ๋ณธ ์ด๋ก ์ด ๋ถ์กฑํ์ ๋ถ๋ค์ด JPA์ ๊ธฐ๋ณธ ์ด๋ก ์ ํํํ๊ฒ ํ์ตํด์ ์ด๋ณด์๋ ์ค๋ฌด์์ ์์ ์๊ฒ JPA๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค., ๋ณธ ๊ฐ์๋ ์๋ฐ ๋ฐฑ์ www.inflearn.com ์ธํ๋ฐ์ ์๋ ๊ฐ์๋ฅผ ๋ณด๋ฉฐ ์ ๋ฆฌํ ๋ด์ฉ์
๋๋ค! ๋ชฉํ : ๊ฐ์ฒด์ ํ
์ด๋ธ ์ค๊ณ ๋งคํ - ๊ฐ์ฒด์ ํ
์ด๋ธ์ ์ ๋๋ก ์ค๊ณํ๊ณ ๋งคํํ๋ ๋ฐฉ๋ฒ - ๊ธฐ๋ณธ ํค์ ์ธ๋ ํค ๋งคํ - 1:N, N:1, 1:1, N:M ๋งคํ - ์ค๋ฌด ๋
ธํ์ฐ + ์ฑ๋ฅ ๊ณ ๋ ค - JPA ๋ด๋ถ ๋์ ๋ฐฉ์ ์ดํดํ๊ธฐ - JPA๊ฐ ์ธ์ , ์ด๋ค SQL์ ๋ง๋ค์ด ์คํํ๋์ง ์ดํด J..
์์ ์์์ ํตํ ๊ธฐ๋ฅ ์ฌ์ฌ์ฉ์ ๋ฐ์ํ ์ ์๋ ๋จ์ 1. ์์ ํด๋์ค ๋ณ๊ฒฝ์ด ์ด๋ ค์ - ์์ ํด๋์ค๋ฅผ ์กฐ๊ธ๋ง ์๋ชป ๋ณ๊ฒฝํด๋ ๊ทธ ํ์ ํด๋์ค๋ค์ด ๋น์ ์์ ์ผ๋ก ์๋๋ ์ ์์. ( ๊ณ์ธต๋๋ฅผ ๋ฐ๋ผ ์ ํ๋จ ) 2. ์๋ก์ด ์กฐํฉ์ด ์๊ธธ ๋ ๋ง๋ค ํ์ ํด๋์ค๊ฐ ์ฆ๊ฐ๋๋ค. ์ด๋ค ํด๋์ค๋ฅผ ์์๋ฐ๋์ง๋ ์ ๋งค 3. ์์์ ์ค์ฉํ ์ ์๋ค. ์ด์ ๊ฐ์ ๋จ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์๊น? - ์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ๋ฌถ์ด์ ๋ ๋ณต์กํ ๊ธฐ๋ฅ์ ์ ๊ณต - ๋ณดํต ํ๋๋ก ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ๋ฐฉ์์ผ๋ก ์กฐ๋ฆฝ, ๊ฐ์ฒด๋ฅผ ํ์ ์์ ์ ์์ฑ/๊ตฌํจ ์์ํ๊ธฐ์ ์์ ์กฐ๋ฆฝ์ผ๋ก ํ ์ ์๋์ง ๊ฒํ ํ๊ณ ์ง์ง ํ์ ํ์
์ธ ๊ฒฝ์ฐ์๋ง ์์์ ์ด์ฉํฉ๋๋ค! (๊ธฐ๋ฅ ์ฌ์ฌ์ฉ ์ ์ฐ์ง ์๋๋ก ์ฃผ์!) ์กฐ๊ฑด ๋ถ๊ธฐ์ผ ๊ฒฝ์ฐ ์ถ์ํ, ์์์ด ์ข์ต๋๋ค. -> ์๋๊ฐ ์ ๋๋ฌ๋๋ ์ด๋ฆ ์ฌ์ฉ ์์กด..
๋คํ์ฑ(Polymoriphism) ์ฌ๋ฌ(poly) ๋ชจ์ต(morph)์ ๊ฐ๋ ๊ฒ ๊ฐ์ฒด ์งํฅ์์๋ ํ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ํ์
์ ๊ฐ๋ ๊ฒ ์ถ์ํ(Abstraction) ๋ฐ์ดํฐ๋ ํ๋ก์ธ์ค ๋ฑ์ ์๋ฏธ๊ฐ ๋น์ทํ ๊ฐ๋
์ด๋ ์๋ฏธ ์๋ ํํ์ผ๋ก ์ ์ํ๋ ๊ณผ์ ๋ ๊ฐ์ง ๋ฐฉ์์ ์ถ์ํ - ํน์ ํ ์ฑ์ง ex) ํตํ, ๊ธ์ก ์ 'Money class'๋ก ์ถ์ํํ ์ ์๋ค. - ๊ณตํต ์ฑ์ง(์ผ๋ฐํ) ex) ์ผ์ฑ์ SL-M2XX, HP MXX ์ 'ํ๋ฆฐํฐ'๋ก ์ถ์ํ ํ ์ ์๋ค. ์๋ก ๋ค๋ฅธ ๊ตฌํ์ ์ถ์ฑํ ํ๋ค. ์๋ฅผ ๋ค์ด (SCP๋ก ํ์ผ ์
๋ก๋, HTTP๋ก ๋ฐ์ดํฐ ์ ์ก, DB ํ
์ด๋ธ์ ์ฝ์
) => ํธ์ ๋ฐ์ก ์์ฒญ์ผ๋ก ์ถ์ํํ ์ ์๋ค. ํ์
์ถ์ํ ์ฌ๋ฌ ๊ตฌํ ํด๋์ค๋ฅผ ๋ํํ๋ ์์ ํ์
๋์ถ ๊ธฐ๋ฅ์ ๋ํ ์๋ฏธ๋ง ์ ๊ณตํ๊ณ ๊ตฌํ์ ์ ๊ณตํ์ง ์..
www.inflearn.com/course/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%9E%85%EB%AC%B8 ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์
๋ฌธ - ์ธํ๋ฐ | ๊ฐ์ ์ ํ๋ ๊ฐ๋ฐ์๊ฐ ๋๊ธฐ ์ํด์๋ ์ ์ฐํ ์ฝ๋๋ฅผ ์์ฑํ ์ค ์์์ผํฉ๋๋ค. ๊ฐ์ฒด ์งํฅ์ ์ด์ฉํด์ ๋ณ๊ฒฝํ๊ธฐ ์ข์ ์ ์ฐํ ์ฝ๋๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์., ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์
๋ฌธ ์ด๋ฒ '๊ฐ www.inflearn.com ํด๋น ๊ฐ์๋ฅผ ๋ณด๋ฉฐ ์ ๋ฆฌํ ๋ด์ฉ์
๋๋ค! ๊ฐ์ฒด์ ํต์ฌ? ๊ฐ์ฒด๋ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ผ๋ก ์ ์ํ๋ค. ์ด๋ค ๊ธฐ๋ฅ์ ์ ๊ณตํ๋์ง๋ก ์ ์ํ์ง ๋ด๋ถ์ ์ผ๋ก ๊ฐ์ง ํ๋๋ก ์ ์ํ์ง ์๋๋ค. ์๋ฅผ๋ค์ด ํ์๊ฐ์ฒด๊ฐ ์๋ค๋ฉด ํ์๊ฐ์ฒด์ ๊ธฐ๋ฅ์ ํ์์์ , ํ..
2021.05.03 - [BASIC] - 01. HTTP ์น ๊ธฐ๋ณธ ์ง์ - ์ธํฐ๋ท ๋คํธ์ํฌ 2021.05.03 - [BASIC] - 02. HTTP ์น ๊ธฐ๋ณธ ์ง์ - URI 2021.05.03 - [BASIC] - 03. HTTP ์น ๊ธฐ๋ณธ ์ง์ - ๋ชจ๋ ๊ฒ์ด HTTP 2021.05.03 - [BASIC] - 04. HTTP ์น ๊ธฐ๋ณธ ์ง์ - HTTP API 2021.05.04 - [BASIC] - 05. HTTP ์น ๊ธฐ๋ณธ ์ง์ - ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์ก 2021.05.04 - [BASIC] - 06. HTTP ์น ๊ธฐ๋ณธ ์ง์ - HTTP ์ํ์ฝ๋ ์๊ฐ 2021.05.06 - [BASIC] - 07. HTTP ์น ๊ธฐ๋ณธ ์ง์ - HTTP ํค๋ ๊ฐ์ ์บ์์ ์กฐ๊ฑด๋ถ ์์ฒญ ์บ์๊ฐ ์์ ๋ - ์ฒซ ๋ฒ์งธ ์์ฒญ..