๐ป JAVA/์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ
์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ์ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌํ ๋ด์ฉ์
๋๋ค. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ - ์ธํ๋ฐ JPA๋ฅผ ์ฒ์ ์ ํ๊ฑฐ๋, ์ค๋ฌด์์ JPA๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ธฐ๋ณธ ์ด๋ก ์ด ๋ถ์กฑํ์ ๋ถ๋ค์ด JPA์ ๊ธฐ๋ณธ ์ด๋ก ์ ํํํ๊ฒ ํ์ตํด์ ์ด๋ณด์๋ ์ค๋ฌด์์ ์์ ์๊ฒ JPA๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๊ธ ์น ๊ฐ๋ฐ ํ๋ก๊ทธ๏ฟฝ www.inflearn.com โ
ํ๋ก์ ํ๋ก์ ํน์ง ์ค์ ํด๋์ค๋ฅผ ์์ ๋ฐ์์ ๋ง๋ค์ด์ก๋ค. ์ค์ ํด๋์ค์ ๊ฒ ๋ชจ์์ด ๊ฐ๋ค ์ค์ ๊ฐ์ฒด์ ์ฐธ์กฐ(target)๋ฅผ ๋ณด๊ด ํ๋ก์ ๊ฐ์ฒด๋ฅผ ํธ์ถํ๋ฉด ํ๋ก์ ๊ฐ์ฒด๋ ์ค์ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค. em.find() : DB๋ฅผ ํตํด์ ์ค์ ์ํฐํฐ ๊ฐ์ฒด ์กฐํ! em.getReference() : DB ์กฐํ๋ฅผ ๋ฏธ๋ฃจ๋ ๊ฐ์ง(ํ๋ก์) ์ํฐํฐ ๊ฐ์ฒด ..
๐ป JAVA/์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ
์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ์ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌํ ๋ด์ฉ์
๋๋ค. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ - ์ธํ๋ฐ JPA๋ฅผ ์ฒ์ ์ ํ๊ฑฐ๋, ์ค๋ฌด์์ JPA๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ธฐ๋ณธ ์ด๋ก ์ด ๋ถ์กฑํ์ ๋ถ๋ค์ด JPA์ ๊ธฐ๋ณธ ์ด๋ก ์ ํํํ๊ฒ ํ์ตํด์ ์ด๋ณด์๋ ์ค๋ฌด์์ ์์ ์๊ฒ JPA๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๊ธ ์น ๊ฐ๋ฐ ํ๋ก๊ทธ๏ฟฝ www.inflearn.com โ
์๊ตฌ ์ฌํญ ์ถ๊ฐ ์ํ์ ์ข
๋ฅ๋ ์๋ฐ, ๋์, ์ํ๊ฐ ์๊ณ ์ดํ ๋ ํ์ฅ๋ ์ ์๋ค. ๋ชจ๋ ๋ฐ์ดํฐ๋ ๋ฑ๋ก์ผ๊ณผ ์์ ์ผ์ด ํ์๋ค. @MappedSuperclass public class BaseEntity { private String createdBy; private LocalDateTime createdDate; private String la..
๐ป JAVA/์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ
์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ์ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌํ ๋ด์ฉ์
๋๋ค. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ - ์ธํ๋ฐ JPA๋ฅผ ์ฒ์ ์ ํ๊ฑฐ๋, ์ค๋ฌด์์ JPA๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ธฐ๋ณธ ์ด๋ก ์ด ๋ถ์กฑํ์ ๋ถ๋ค์ด JPA์ ๊ธฐ๋ณธ ์ด๋ก ์ ํํํ๊ฒ ํ์ตํด์ ์ด๋ณด์๋ ์ค๋ฌด์์ ์์ ์๊ฒ JPA๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๊ธ ์น ๊ฐ๋ฐ ํ๋ก๊ทธ๏ฟฝ www.inflearn.com ๐ @MappedSuperclass ๊ณตํต ๋งคํ ์ ๋ณด๊ฐ ํ์ํ ๋ ์ฌ์ฉํ๋ค! ์์๊ด๊ณ ๋งคํ X ์ํฐํฐ X, ํ
์ด๋ธ๊ณผ ๋งคํ X ๋ถ๋ชจ ํด๋์ค๋ฅผ ์์ ๋ฐ๋ ์์ ํด๋์ค์ ๋งคํ ์ ๋ณด๋ง ์ ๊ณตํ๋ค. ์กฐํ, ๊ฒ์ ๋ถ๊ฐ (em.find(BaseEntity) ๋ถ๊ฐ!) ์ง์ ์์ฑํด์ ์ฌ์ฉํ ์ผ์ด ์์ผ๋ฏ๋ก ์ถ์ (abstract) ํด๋์ค ๊ถ์ฅ import javax..
๐ป JAVA/์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ
์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ์ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌํ ๋ด์ฉ์
๋๋ค. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ - ์ธํ๋ฐ JPA๋ฅผ ์ฒ์ ์ ํ๊ฑฐ๋, ์ค๋ฌด์์ JPA๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ธฐ๋ณธ ์ด๋ก ์ด ๋ถ์กฑํ์ ๋ถ๋ค์ด JPA์ ๊ธฐ๋ณธ ์ด๋ก ์ ํํํ๊ฒ ํ์ตํด์ ์ด๋ณด์๋ ์ค๋ฌด์์ ์์ ์๊ฒ JPA๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๊ธ ์น ๊ฐ๋ฐ ํ๋ก๊ทธ๏ฟฝ www.inflearn.com โ
์์๊ด๊ณ ๋งคํ ์ฃผ์ ์ ๋
ธํ
์ด์
@Inheritance(strategy = InheritanceType. OOO) JOINED : ์กฐ์ธ ์ ๋ต @DiscripminatorColumn ์ ์ฉํด์ค์ ๊ตฌ๋ณํ๋๊ฒ์ด ์ข๋ค! SINGLE_TABLE : ๋จ์ผ ํ
์ด๋ธ ์ ๋ต @DiscripminatorColumn ๊ธฐ๋ณธ์ผ๋ก ์ ์ฉ๋จ! (์ถ์ฒํ์ง ์๋๋ค)TABLE_PE..
๐ป JAVA/์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ
๋ค๋๋ค ๋งคํ์ ์ ๋งํ๋ฉด ์์ฐ๋๊ฒ ์ต์ ์ด๋ค. ๋ค๋๋ค ๋งคํ ๋ฐฉ๋ฒ์ด ๋๊ฐ์ง๊ฐ ์๋๋ฐ @ManyToMany๋ฅผ ์ฌ์ฉํ๋๊ฒ์ด๋ค. ์ฐ๊ฒฐ ํ
์ด๋ธ์ฉ ์ํฐํฐ ์ถ๊ฐํด์ @OneToMany๋ฅผ ์ฌ์ฉ (์ฐ๊ฒฐํ
์ด๋ธ์ ์ํฐํฐ๋ก ์น๊ฒฉ) โ
๋ค๋๋ค [N:M] 1. @ManyToMany ๋ฅผ ์ฌ์ฉ MEMBER_PRODUCT ๋ผ๋ ์ค๊ฐ ํ
์ด๋ธ์ด ์์ฑ์ด ๋๋ค. @Entity public class Member { @ManyToMany @JoinTable(name = "MEMBER_PRODUCT") // ์ด๋ ๊ฒ ํ๋ฉด MEMBER_PRODUCT๋ผ๋ ํ
์ด๋ธ์ด ์์ฑ๋๋ค. private List products = new ArrayList(); // ๋ค๋ฅธ ๋ฉ์๋ ์๋ต } @Entity public class Product { @ManyToMany(map..
๐ป JAVA/์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ
์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ์ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌํ ๋ด์ฉ์
๋๋ค. ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ - ์ธํ๋ฐ | ๊ฐ์ JPA๋ฅผ ์ฒ์ ์ ํ๊ฑฐ๋, ์ค๋ฌด์์ JPA๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ธฐ๋ณธ ์ด๋ก ์ด ๋ถ์กฑํ์ ๋ถ๋ค์ด JPA์ ๊ธฐ๋ณธ ์ด๋ก ์ ํํํ๊ฒ ํ์ตํด์ ์ด๋ณด์๋ ์ค๋ฌด์์ ์์ ์๊ฒ JPA๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค., - ๊ฐ์ ์๊ฐ | ์ธํ๋ฐ www.inflearn.com โ
๋ค๋์ผ [N:1] ๋จ๋ฐฉํฅ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์ฐ๊ด๊ด๊ณ public class Member{ @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @ManyToOne @JoinColumn(name = "TEAM_ID") // ์๋ต ๊ฐ๋ฅ..