๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค. DB ํ๋ก๊ทธ๋จ์ผ๋ก๋ MySQL, ์ค๋ผํด, ๋ง๋ฆฌ์ DB ๋ฑ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ง๋ง ์ด๋ฒ ์ค์ต์์๋ ์คํ๋ง๋ถํธ ํ๋ก์ ํธ ์์ฑ ์ ๋ฐ์ H2 DB๋ฅผ ์ฌ์ฉํ์ฌ ์งํํฉ๋๋ค.
JPA
Java Persistence API
DB๋ SQL(Structured Query Language)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋์ Java๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ๋ช ๋ น์ ๋ด๋ฆฌ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ด ๋ JPA๋ฅผ ์ฌ์ฉํ์ฌ DB์ Java๋ฅผ ์ฌ์ฉํ์ฌ ๋ช ๋ น์ ๋ด๋ฆด ์ ์์ต๋๋ค.
JPA๋ ์๋ฐ ์ธ์ด๋ก DB์ ๋ช ๋ น์ ๋ด๋ฆฌ๋ ๋๊ตฌ๋ก, ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ํฉ๋๋ค.
JPA์ ํต์ฌ ๋๊ตฌ
์ํฐํฐ
์๋ฐ ๊ฐ์ฒด๋ฅผ DB๊ฐ ์ดํดํ ์ ์๊ฒ ๋ง๋ ๊ฒ์ผ๋ก, ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์ด๋ธ์ ์์ฑํ๋ค.
๋ฆฌํ์งํฐ๋ฆฌ
์ํฐํฐ๊ฐ DB ์ ํ ์ด๋ธ์ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ๋ ์ ์๊ฒ ํ๋ ์ธํฐํ์ด์ค
์ค์ต
JPA ๊ธฐ๋ณธ ๊ฐ๋ ์ ์์์ผ๋, ์ค์ต์ ํตํด DTO๋ก ๋ง๋ ํผ ๋ฐ์ดํฐ๋ฅผ DB์ ์ ์ฅํ๋ ์์ ๋ฅผ ์ค์ตํด๋ณด๊ฒ ์ต๋๋ค.
1. DTO๋ฅผ ์ํฐํฐ๋ก ๋ณํํ๊ธฐ
ArticleController.java ํ์ผ์์ ์ค์ต์ ์ด์ดํ๊ฒ ์ต๋๋ค.
DTO๋ฅผ ์ํฐํฐ๋ก ๋ณํํ๊ธฐ ์ํด์๋ form ๊ฐ์ฒด์ toEntity()๋ผ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ , ๊ทธ ๋ฐํ๊ฐ์ Article ํ์ ์ article ์ํฐํฐ์ ์ ์ฅํฉ๋๋ค. ์ด ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํด์๋ Article ํด๋์ค์ toEntity() ๋ฉ์๋๋ฅผ ๋ง๋ค์ด์ฃผ์ด์ผ ํฉ๋๋ค.
๐กDTO๋ฅผ ์ํฐํฐ๋ก ๋ณํํ๊ธฐ ์ํด์๋ ๋จผ์ ์ํฐํฐ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
Article ํด๋์ค ๋ง๋ค๊ธฐ
Create Class Article ์ฐฝ์์, ํจํค์ง ์์ฑ ์์น๋ฅผ controller->entity๋ก ์์ ํ, OK ๋ฒํผ์ ๋๋ฅด๋ฉด entity ํจํค์ง๊ฐ ์์ฑ๋๊ณ , ๋ด๋ถ์ Article ํด๋์ค๊ฐ ํจ๊ป ๋ง๋ค์ด์ง ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
Article ํด๋์ค ์ฝ๋๋ฅผ ์์ฑํด์ค๋๋ค.
1. Article ํด๋์ค๊ฐ ์ํฐํฐ์์ ์ ์ธํ๊ธฐ ์ํด @Entity ์ด๋ ธํ ์ด์ ์ ๋ถ์ ๋๋ค.
2. title, content ํ๋๋ฅผ ์ ์ธํ๊ณ , DB์์ ์ธ์ํ ์ ์๋๋ก @Column ์ด๋ ธํ ์ด์ ์ ๋ถ์ ๋๋ค.
3. ์ํฐํฐ์ ๋ํ๊ฐ์ด ๋ id๋ฅผ ์ ์ธํ๊ณ , @Id ์ด๋ ธํ ์ด์ ์ ๋ถ์ ๋๋ค. @GeneratedValue ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ ๋ํฏ๊ฐ์ ์๋์ผ๋ก ์์ฑํ๊ฒ ํฉ๋๋ค. ๋ํ๊ฐ์ ์๋ณ์ ์ํด ์ฌ์ฉํฉ๋๋ค.
์ด์ฒ๋ผ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด, Entity์ id, title, content ํ๋๊ฐ DB์ ๊ฐ ์ด๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.
4. Article ๊ฐ์ฒด ์์ฑ ๋ฐ ์ด๊ธฐํ๋ฅผ ์ํด ์์ฑ์๋ฅผ ์ถ๊ฐํฉ๋๋ค. content ํ๋ ์๋์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ ํด๋ฆญ ํ, Generate->Constructor์ ์ ํ, id: Long, title: String, content: String์ ๋ชจ๋ ์ ํํ์ฌ ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
5. ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ ํด๋ฆญ ํ, Generate->toString()์ ์ ํํ์ฌ ์์ ๋์ผํ ํญ๋ชฉ๋ค์ ๋ชจ๋ ์ ํํ ํ, ํ์ธํ์ฌ toString ๋ฉ์๋๋ ์ถ๊ฐํด์ค๋๋ค.
ArticleController๋ก ๋์๊ฐ์ ๋ณด๋ฉด, Article์ ์ค๋ฅ ํ์๊ฐ ์ฌ๋ผ์ง ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด์ ๋ toEntity() ๋ฉ์๋๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
toEntity() ๋ฉ์๋ ๋ง๋ค๊ธฐ
toEntity() ๋ฉ์๋๋ DTO์ธ form ๊ฐ์ฒด๋ฅผ ์ํฐํฐ ๊ฐ์ฒด๋ก ๋ณํํ๋ ์ญํ ์ ํฉ๋๋ค.
1. Create method 'toEntity' in 'ArticleForm'์ ํด๋ฆญํ๋ฉด, ArticleForm์ด ์ด๋ฆฌ๋ฉด์ toEntity() ๋ฉ์๋๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
2. toEntity() ๋ฉ์๋์์๋ ํผ ๋ฐ์ดํฐ๋ฅผ ๋ด์ DTO ๊ฐ์ฒด๋ฅผ ์ํฐํฐ๋ก ๋ฐํํฉ๋๋ค. ์ ๋ฌ๊ฐ์ Article ํด๋์ค์ ์์ฑ์ ํ์์ ๋ง๊ฒ ์์ฑํฉ๋๋ค.
2. ๋ฆฌํ์งํฐ๋ฆฌ๋ก ์ํฐํฐ๋ฅผ DB์ ์ ์ฅ
๋ฆฌํ์งํฐ๋ฆฌ๋ก ์ํฐํฐ๋ฅผ DB์ ์ ์ฅํด์ผ ํฉ๋๋ค.
1. articleRepository.save() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ article ์ํฐํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
2. save() ๋ฉ์๋๋ ์ ์ฅ๋ ์ํฐํฐ๋ฅผ ๋ฐํํ๋ฏ๋ก ์ด๋ฅผ Article ํ์ ์ saved ๊ฐ์ฒด์์ ๋ฐ์์ต๋๋ค. ์ค๋ฅ์์ด ์ฌ์ฉํ๊ธฐ ์ํด์๋ articleRepository ๊ฐ์ฒด๋ฅผ ์ ์ธํด์ฃผ์ด์ผ ํฉ๋๋ค.
๋นจ๊ฐ ์ค๋ฅ๋ค์ ์ก๊ธฐ ์ํด์๋ ๋ฆฌํ์งํฐ๋ฆฌ๋ฅผ ์์ฑํด์ฃผ์ด์ผ ํฉ๋๋ค.
๋ฆฌํ์งํฐ๋ฆฌ ๋ง๋ค๊ธฐ
1. repository๋ผ๋ ์ด๋ฆ์ ์๋ก์ด ํจํค์ง๋ฅผ ์์ฑํด์ค๋๋ค.
2. ArticleRepository๋ผ๋ ์ด๋ฆ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์ด์ค๋๋ค.
3. ๋ฆฌํ์งํฐ๋ฆฌ๋ JPA์์ ์ ๊ณตํ๋ ๋ฆฌํ์งํฐ๋ฆฌ ์ธํฐํ์ด์ค๋ฅผ ํ์ฉํ์ฌ ๋ง๋ค ์ ์์ต๋๋ค. ArticleRepository ๋ค์์ extends Crud๋ฅผ ์ ๋ ฅํ๋ฉด ์์ฑ๋๋ ํผ์นจ ๋ชฉ๋ก์์ CrudRepository<T, ID>๋ฅผ ์ ํํ์ฌ, CrudRepository๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ์ต๋๋ค.
๐กCrudRepository๋ JPA์์ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค๋ก, ์ด๋ฅผ ์์ํด ์ํฐํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.
4. CrudRepository์ <> ๋ฅผ ๋ถ์ด๊ณ , ๊ทธ ์์ 2๊ฐ์ ์ ๋ค๋ฆญ ์์๋ฅผ ๋ฐ์ต๋๋ค. ๊ฐ๊ฐ ๊ด๋ฆฌ ๋์ ์ํฐํฐ์ ํด๋์ค ํ์ , ๊ด๋ฆฌ ๋์ ์ํฐํฐ์ ๋ํ๊ฐ ํ์ ์ ๋๋ค. ๋ณธ ์ค์ต์์๋ Article, Long์ ์ ๋ ฅํฉ๋๋ค.
5. ์ฌ๊ธฐ๊น์ง ์์ฑํ๋ฉด CrudRepository์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ๋ณ๋ ์ ์ ์์ด, ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ฐ์ฒด ์ฃผ์ ํ๊ธฐ
์คํ๋ง๋ถํธ์์๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ง ์์๋, ์คํ๋ง๋ถํธ๊ฐ ์๋์ผ๋ก ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ์ธํฐํ์ด์ค ๊ตฌํ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์์๋ ๋ฉ๋๋ค. @Autowired ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ ์คํ๋ง๋ถํธ๊ฐ ๋ฏธ๋ฆฌ ์์ฑํ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๊ฒฐํด์ค๋๋ค.
๐ก@Autowired๋ ์คํ๋ง ๋ถํธ๊ฐ ๋ง๋ค์ด๋์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ ์ฃผ์ ํด์ฃผ๋ฉฐ, ์ด๋ฅผ ์์กด์ฑ ์ฃผ์ ์ด๋ผ๊ณ ํ๋ค.
์ค๋ฅ ํด๊ฒฐ
๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋์ง ํ์ธ์ ์ํด ์๋ฒ๋ฅผ ์คํํ๋ ์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋ฌธ์ ์ ์์ธ์ jenkins...jenkins ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ตํ ๋ localhost:8080 ํฌํธ๋ฅผ ์ฌ์ฉํ๊ณ ์์๋๋ฐ ๊ทธ๊ฒ ์์ง ์ฌ์ฉ ์ค์ธ ์ํ์๋๋ด ๋๋ค. ์คํ๋ง๋ถํธ ์คํ ํฌํธ๋ฅผ ๋ฐ๊พธ๊ฑฐ๋, jenkins๋ฅผ ๊บผ์ฃผ์ด์ผ ํ๋๋ฐ jenkins๋ฅผ ๋๋ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐํ์ต๋๋ค.
์๋ฒ๋ฅผ ์ฌ์์ํด๋ณด๋ฉด ์ ์คํ๋ฉ๋๋ค๐๐