JPA Entity๋ฅผ ์ ์ธํ ๋๋ ์๋์ ๊ฐ์ด ๋จ์ @Enumerated Annotation์ ์ฌ์ฉํ๋ ํํ๋ก Enum Type์ ์ฌ์ฉํ๊ณ ์์๋ค.ํด๋น Column์ ์๊ตฌ์ฌํญ์ด ๋ณ๊ฒฝ๋์ด ๊ธฐ์กด Enum to Set Type์ผ๋ก, Column Type์ ๋ณ๊ฒฝํ๊ฒ ๋์๋ค.
์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ๋ง์ฝ ๋ชจ๋ ํ ์ด๋ธ์ CREATED_TIME, MODIFIED_TIME๊ณผ ๊ฐ์ ๊ณตํต Column์ด ์๋ค๊ณ ํ์.์ด๋ด๋ @MappedSuperclass๋ก ๊ณตํต Entity๋ฅผ ์ ์ธํ๊ณ ์์๋ฐ์ ๊ด๋ฆฌํ ์ ์๋ค.์๋ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์์ฝ๊ฒ ์ดํด๋
์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ์๋์ ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ ๋ TABLE์ด ์๋ค๊ณ ํ์.USER์ GROUP์ ๋ค๋์ผ ๊ด๊ณ์ด๊ณ ,GROUP์์ USER๋ ์ผ๋๋ค ๊ด๊ณ์ด๋ค.์ ๋ TABLE์ JPA์์ Entity๋ก Mappingํ ๋์ผ๋๋ค ๊ด๊ณ์ ๊ฒฝ์ฐ ์ฌ๋ฌ ๊ฑด๊ณผ ์ฐ๊ด๊ด๊ณ
์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐJPA์์ @Entity๋ก Table์ ๋งคํํ๋ Class์ Field ๊ฐ๊ณผ,Table์ Column Mapping์ ์ฌ์ฉ๋๋ Annotation์ผ๋ก,@Column, @Enumerated, @Temporal, @Lob, @Transie
์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐJPA๊ฐ ์ ๊ณตํ๋ DB ๊ธฐ๋ณธ ํค ํ ๋น ์ ๋ต์ ์ง์ ํ ๋น ๋ฐฉ์, ์๋ ์์ฑ ๋ฐฉ์ ๋ ๊ฐ์ง์ด๋ค.์ด ์ค ์ง์ ํ ๋น ๋ฐฉ์์ Application์์ ๊ธฐ๋ณธ ํค๋ฅผ ์ง์ ํ ๋นํ๋ ๋ฐฉ์์ด๋ค.์๋ ์์ฑ ๋ฐฉ์์ ๋๋ฆฌ ํค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ์๋ ์ธ ๊ฐ์ง
์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐJPA์์ DB Table์ Column์ Mapping ํ ๋ @Column Annotation์ ์ฌ์ฉํ๋ค.์ฌ๊ธฐ์ @Column์ ์ฌ์ฉํ์ง ์์ผ๋ฉด userId์ ๊ฐ์ด ์์ฑ๋ช ๊ทธ๋๋ก DB Column๊ณผ Mapping์ ์๋ํ๋ค.@Col
์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐJPA๋ฅผ ์ฌ์ฉํ ๋ Hibernate์ DDL ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.์๋์ ๊ฐ์ ์์ฑ ๊ฐ์ ์ฌ์ฉํ ์ ์๋ค.Hibernate์์ ์ง์ํ๋ DDL ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์๋์ ๊ฐ์ ์์ฑ์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฅํ๋ค.
SpringBoot์์ JPA๋ฅผ ํตํด์ Entity Class์ @Table Annotation์ผ๋ก DB Table ๋ช ์ ์๋ ์ฌ์ง์ฒ๋ผ ๋๋ฌธ์๋ก ์ ๋ ฅํ๋๋ฐ, ์ค์ ๋ก Hibernate์ Query ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ์๋ฌธ์๋ก ๋งคํ๋๊ณ ์์๊ณ , ๋๋ฌธ์๋ก ์์ฑ๋ Table
JPA JPA๋ Java Persistence API์ ์ฝ์๋ก Java์ง์์์ ์ ๊ณตํ๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๊ณผ ๊ฐ์ฒด ๋ชจ๋ธ๊ฐ์ ํจ๋ฌ๋ค์ ๋ถ์ผ์น๋ฅผ ํด๊ฒฐํด์ฃผ๋ ORM ๊ธฐ์ ํ์ค์ด๋ค. ORM : Object-Relational Mapping ์ง๊ธ๊น์ง ๊ฐ์ฒด ๋ชจ๋ธ๋ง์ ์ธ๋ฐํ