Spring/Spring JPA ํ์ฉ
@Service @Transactional(readOnly = true) public class MemberService @Service ์คํ๋ง์์ ์๋น์ค๋ฅผ ์ง์ ํ๋ ์ด๋
ธํ
์ด์
. ์ฌ์ค @Component ์ด๋
ธํ
์ด์
๊ณผ ๊ฑฐ์ ์ฐจ์ด๊ฐ ์์ง๋ง ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๋ ์๋น์ค ๋ ์ด์ด ํด๋์ค ์์ ๋ํ๋ธ๋ค. @Transactional JPA์ ๋ชจ๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด๋ ๋ก์ง๋ค์ ํธ๋์ญ์
์์์ ์คํ๋๋๋ก ํ๋ค . DB์ ๊ด๋ จ๋, ํธ๋์ญ์
์ด ํ์ํ ์๋น์ค ํด๋์ค ํน์ ๋ฉ์๋์ @Transactional ์ด๋
ธํ
์ด์
์ ๋ฌ์์ฃผ๋ฉด๋๋ค. @Transactional์ด ๋ถ์ ๋ฉ์๋๋ ๋ฉ์๋๊ฐ ํฌํจํ๊ณ ์๋ ์์
์ค์ ํ๋๋ผ๋ ์คํจํ ๊ฒฝ์ฐ ์ ์ฒด ์์
์ ์ทจ์ํ๋ค. readOnly=true - ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ด ์๋ ์ฝ๊ธฐ ์ ์ฉ ๋ฉ์๋์ ์ฌ์ฉ..
Spring/Spring JPA ํ์ฉ
์ ํ๋ฆฌ์ผ์ด์
์ํคํ
์ฒ Repository repository: JPA๋ฅผ ์ง์ ์ฌ์ฉํ๋ ๊ณ์ธต, ์ํฐํฐ ๋งค๋์ ์ฌ์ฉ Entity์ ์ํด ์์ฑ๋ DB์ ์ ๊ทผํ๋ ๋ฉ์๋(ex) findAll()) ๋ค์ ์ฌ์ฉํ๊ธฐ ์ํจ ์ํฐํฐ๋ฅผ ์ ์ธํจ์ผ๋ก์จ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์๋ค๋ฉด, ์ฌ๊ธฐ์ ์ด๋ค ๊ฐ์ ๋ฃ๊ฑฐ๋, ๋ฃ์ด์ง ๊ฐ์ ์กฐํํ๋ ๋ฑ์ CRUD(Create, Read, Update, Delete)๋ฅผ ํด์ผ ์ธ๋ชจ๊ฐ ์๋๋ฐ, ์ด๊ฒ์ ์ด๋ป๊ฒ ํ ๊ฒ์ธ์ง ์ ์ํด์ฃผ๋ ๊ณ์ธต์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. @Repository public class MemberRepository { @PersistenceContext private EntityManager em; @Repository : ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก, JPA ์์ธ๋ฅผ ์คํ๋ง ๊ธฐ๋ฐ ์์ธ๋ก ์์ธ ..
Spring/Spring JPA ํ์ฉ
์ํฐํฐ ํด๋์ค ๊ฐ๋ฐ @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; @Column์ ๊ฐ์ฒด ํ๋๋ฅผ ํ
์ด๋ธ์ ์ปฌ๋ผ์ ๋งคํ์์ผ์ฃผ๋ ์ด๋
ธํ
์ด์
์
๋๋ค. name : ํ๋์ ๋งคํํ ํ
์ด๋ธ์ ์ปฌ๋ผ ์ด๋ฆ์ ์ง์ ํ๋ค. ์ํฐํฐ์ ์๋ณ์๋ id ๋ฅผ ์ฌ์ฉํ๊ณ PK ์ปฌ๋ผ๋ช
์ member_id ๋ฅผ ์ฌ์ฉํ๋ค. @Embeddable ๋์, ์ฃผ์ ๋ฒ์ง, ์ฃผ์ ์ฐํธ๋ฒํธ๋ฅผ ์ฃผ์๋ผ๋ ๊ฐ์ฒด๋ก ๋ฌถ์ด ํํํ๋ฉด ๋ณด๋ค ๊ฐ์ฒด์งํฅ์ ์ธ ์ฝ๋๊ฐ ๋ ๊ฒ์ด๋ค. @Embeddable public class Address { private String city; private String street; privat..
Spring/Spring JPA ํ์ฉ
Entity(์ํฐํฐ) JPA์์ ์ํฐํฐ๋ ์ฝ๊ฒ ์๊ฐํ๋ฉด, DB ํ
์ด๋ธ์ ๋์ํ๋ ํ๋์ ํด๋์ค๋ผ๊ณ ์๊ฐํ ์ ์์ต๋๋ค. @Entity๊ฐ ๋ถ์ ํด๋์ค๋ JPA๊ฐ ๊ด๋ฆฌํด์ฃผ๋ฉฐ, JPA๋ฅผ ์ฌ์ฉํด์ DB ํ
์ด๋ธ๊ณผ ๋งคํํ ํด๋์ค๋ @Entity๋ฅผ ๊ผญ ๋ถ์ฌ์ผ๋ง ๋งคํ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ํฐํฐ ํด๋์ค๋ ํ
์ด๋ธ๊ณผ ๋งคํ๋๋ ํด๋์ค์ด๋ค. ์ ๋
ธํ
์ด์
์ ์ฌ์ฉํ์ฌ ์ ์ ํ ์ํฐํฐ ํด๋์ค๋ฅผ ๊ตฌ์ฑํ๊ณ , ์์ฑ๋ ์ํฐํฐ ํด๋์ค๋ ๋ช
์ธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ
์ด๋ธ๊ณผ ๋งคํ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ 2์ฐจ์ ํ
์ด๋ธ ์ด ํ
์ด๋ธ์ ์๋น์ค์์ ํ์ํ ์ ๋ณด๋ฅผ ๋ค ์ ์ฅํ๊ณ ํ์ฉํ๊ฒ ๋๋ค. ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ธ๋ก์ ์ด ๋ถ๋ถ์ด Column ์ด๊ณ , ๊ฐ๋ก์ ํ ๋ถ๋ถ์ด ์ํฐํฐ ๊ฐ์ฒด๊ฐ ๋๋ค. ์ด ํ
์ด๋ธ ์ ์ฒด๊ฐ ์ํฐํฐ ์ด๊ณ , ๊ฐ 1๊ฐ์ ํ๋ค์ด ์ํฐํฐ ๊ฐ์ฒด๊ฐ ๋๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค...
Spring/Spring MVC
๋ฆฌ๋ค์ด๋ ํธ๋ ๋ง ๊ทธ๋๋ก re(๋ค์) + ์ง์ํ๋ค(direct) ๋ค์ ์ง์ํ๋ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด ๋ธ๋ผ์ฐ์ ๊ฐ www.test.com/page1 URL์ ์น ์๋ฒ์ ์์ฒญํ์ต๋๋ค. ์๋ฒ๋ HTTP ์๋ต ๋ฉ์์ง๋ฅผ ํตํด "www.test.com/page2 ๋ก ๋ค์ ์์ฒญํ์ธ์~" ๋ผ๊ณ ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ค๋ฅธ URL(๊ธธ, ๋ฐฉํฅ) ์ ์ง์ํ ์ ์์ต๋๋ค. POST ๋ฑ๋ก ํ ์๋ก ๊ณ ์นจ ์น ๋ธ๋ผ์ฐ์ ์ ์๋ก ๊ณ ์นจ์ ๋ง์ง๋ง์ ์๋ฒ์ ์ ์กํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ ์กํ๋ค. ์ํ ๋ฑ๋ก ํผ์์ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ๊ณ ์ ์ฅ์ ์ ํํ๋ฉด POST /add + ์ํ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ์ ์กํ๋ค. ์ด ์ํ์์ ์๋ก ๊ณ ์นจ์ ๋ ์ ํํ๋ฉด ๋ง์ง๋ง์ ์ ์กํ POST /add + ์ํ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ๋ค์ ์ ์กํ๊ฒ ๋๋ค. ๊ทธ๋์ ๋ด์ฉ์ ๊ฐ๊ณ , ID๋ง ๋ค๋ฅธ ์ํ ๋ฐ์ดํฐ..
Spring/Spring MVC
์์ฒญ ํ๋ผ๋ฏธํฐ ์ฒ๋ฆฌ @ModelAttribue Item item @PostMapping("/add") public String addItem(@ModelAttribute Item item,Model model) { itemRepository.save(item); model.addAttribute("item",item); return "basic/item"; } ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์์ ํ์ํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๊ทธ ๊ฐ์ฒด์ ๊ฐ์ ๋ฃ์ด์ฃผ๊ธฐ ์์ฒญ ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ํ๋กํผํฐ ์ ๊ทผ๋ฒ(setXxx)์ผ๋ก ์
๋ ฅํด์ค๋ค. public String addItemV1(@RequestParam String itemName, @RequestParam int price, @RequestParam Integer quantity, Model ..
Spring/Spring MVC
์ ์ ์ธ html ์ ๋์ html ๋ก ๋ฐ๊ฟ๋ณด์ ํ์๋ฆฌํ๋ ์์ HTML ํ์ผ์ ์น ๋ธ๋ผ์ฐ์ ์์ ์ด์ด๋ ๋ด์ฉ์ ํ์ธํ ์ ์๊ณ , ์๋ฒ๋ฅผ ํตํด ๋ทฐ ํ
ํ๋ฆฟ์ ๊ฑฐ์น๋ฉด ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๋ค. ์์ HTML์ ๊ทธ๋๋ก ์ ์งํ๋ฉด์ ๋ทฐ ํ
ํ๋ฆฟ๋ ์ฌ์ฉํ ์ ์๋ ํ์๋ฆฌํ์ ํน์ง์ ๋ค์ธ๋ด ํ
ํ๋ฆฟ ํ์๋ฆฌํ ๊ฐ๋จํ ์์๋ณด๊ธฐ ํ์๋ฆฌํ ์ฌ์ฉ ์ ์ธ ์์ฑ ๋ณ๊ฒฝ - th:href ๋ทฐ ํ
ํ๋ฆฟ์ ๊ฑฐ์น๋ฉด th:href ์ ๊ฐ์ด href ๋ก ๋์ฒด๋๋ฉด์ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ค. ๋๋ถ๋ถ์ HTML ์์ฑ์ th:xxx ๋ก ๋ณ๊ฒฝํ ์ ์๋ค. ์ํ ๋ชฉ๋ก ํ์ด์ง ์ํ ๋ฑ๋ก ๋ฒํผ html ์ํ ๋ฑ๋ก ์์ฑ ๋ณ๊ฒฝ - th:onclick onclick="location.href='addForm.html'" th:onclick="|locati..
Spring/Spring MVC
์คํ๋ง(์๋ฒ)์์ ์๋ต ๋ฐ์ดํฐ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ ์ ์ ๋ฆฌ์์ค ์) ์น ๋ธ๋ผ์ฐ์ ์ ์ ์ ์ธ HTML, css, js๋ฅผ ์ ๊ณตํ ๋๋, ์ ์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ค. ๋ทฐ ํ
ํ๋ฆฟ ์ฌ์ฉ ์) ์น ๋ธ๋ผ์ฐ์ ์ ๋์ ์ธ HTML์ ์ ๊ณตํ ๋๋ ๋ทฐ ํ
ํ๋ฆฟ์ ์ฌ์ฉํ๋ค. HTTP ๋ฉ์์ง ์ฌ์ฉ HTTP API๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ์ฐ์๋ HTML์ด ์๋๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด์ผ ํ๋ฏ๋ก, HTTP ๋ฉ์์ง ๋ฐ๋์ JSON ๊ฐ์ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ค์ด ๋ณด๋ธ๋ค. HTTP ์๋ต - ์ ์ ๋ฆฌ์์ค, ๋ทฐ ํ
ํ๋ฆฟ ์ ์ ๋ฆฌ์์ค ์คํ๋ง ๋ถํธ๋ ํด๋์คํจ์ค์ ๋ค์ ๋๋ ํ ๋ฆฌ์ ์๋ ์ ์ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํ๋ค. /static , /public , /resources , /META-INF/resources src/main/resources ๋ทฐ ํ
ํ๋ฆฟ ๋ทฐ ํ
ํ๋ฆฟ์ ๊ฑฐ์ณ์ HTML์ด ์..