์ฃผ์ ์ฐจ์ด์ 1. Java ๋ฒ์ ์๊ตฌ์ฌํญSpring Boot 2.x: ์ต์ Java 8์ ์๊ตฌํ๋ฉฐ, ์ผ๋ถ ๊ธฐ๋ฅ์ Java 11์ ์ง์Spring Boot 3.x: ์ต์ Java 17์ ์๊ตฌ ์ด๋ ์ต์ Java ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ฑ๋ฅ๊ณผ ๋ณด์์ด ๊ฐ์ ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ์ ์๊ฒ ํ๋ค.2. Jakarta EE๋ก์ ์ ํSpring Boot 2.x: Java EE 8์ ๊ธฐ๋ฐSpring Boot 3.x: Jakarta EE 9 ์ด์์ผ๋ก ์ ํ๋์์ต๋๋ค. ์ด๋ก ์ธํด ํจํค์ง ์ด๋ฆ์ด javax์์ jakarta๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด, javax.servlet์ jakarta.servlet๋ก ๋ณ๊ฒฝ3. ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์ Spring Boot 3.x: ๋ค์ํ ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์ ์ด ๋์
๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์๋ก์ด ..
๐ฟSpring
ํ๋ ์์ํฌ ์์ ํด๋์ค๋ชจ๋ Spring Boot ํ๋ก์ ํธ์๋ @SpringBootApplication.@SpringBootApplication ๊ณต์ฉ ํด๋์ค Application { public static void main (String[] args) throws Exception { SpringApplication.run(Application.class, args); } }๋ฉ์๋๋ฅผ ์ง์ ์ดํด๋ณด๋ฉด SpringApplication.run์ ์ฒด ์์ ํ๋ก์ธ์ค๊ฐ SpringBootApplication ์์ฑ์ ์ run ๋ฉ์๋ ์คํ์ด๋ผ๋ ๋ ๋ถ๋ถ์ผ๋ก ๋๋์ด์ ธ ์์์ ์ ์ ์์ต๋๋ค .public static ConfigurableApplicationContext run (..
์ ๋ฒ ์๊ฐ์ Spring Data JPA ๋ฌด์์ธ๊ฐ์ ๊ฐ๋จํ ํต์ฌ์ ๋ต์ ๋ํด์ ์์๋ดค๋ค. ์ด์ด์ Spring Data JPA์ ์ธ์
๊ด๋ฆฌ ์ ๋ต ์ค ํ๋์ธ OSIV ์ ๋ต์ ๋ํด์ ์์๋ณด๋ ค๊ณ ํ๋ค. 2024.01.22 - [๐ฟSpring/Spring JPA] - [Spring JPA] JPA๋? [Spring JPA] JPA๋? ์ด๋ฒ ๊ธ์์๋ JPA(Java Persistence API)์ ๋ํด ์์๋ณด๋ ค๊ณ ํ๋ค. JPA๋ ์๋ฐ ์ง์์์ ORM(Object-Relational Mapping) ๊ธฐ์ ํ์ค์ผ๋ก ์ฌ์ฉ๋๋ ์ธํฐํ์ด์ค ๋ชจ์์ด๋ค. ๊ทธ ๋ง์ ์ฆ, ์ค์ ์ ์ผ๋ก ๊ตฌํ ๋ ๊ฒ์ด ์ boom-94.tistory.com OSIV (Open Session In View) ์คํ๋ง ํ๋ ์์ํฌ์์ ์ฌ์ฉํ๋ ์ธ์
๊ด๋ฆฌ ์ ๋ต ์ค..
์ด๋ฒ ๊ธ์์๋ JPA(Java Persistence API)์ ๋ํด ์์๋ณด๋ ค๊ณ ํ๋ค. JPA๋ ์๋ฐ ์ง์์์ ORM(Object-Relational Mapping) ๊ธฐ์ ํ์ค์ผ๋ก ์ฌ์ฉ๋๋ ์ธํฐํ์ด์ค ๋ชจ์์ด๋ค. ๊ทธ ๋ง์ ์ฆ, ์ค์ ์ ์ผ๋ก ๊ตฌํ ๋ ๊ฒ์ด ์๋๋ผ ๊ตฌํ๋ ํด๋์ค์ ๋งคํ์ ํด์ฃผ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํ๋ ์์ํฌ JPA๋ฅผ ๊ตฌํํ ๋ํ์ ์ธ ์คํ์์ค๋ก๋ Hibernate๊ฐ ์๋ค. JPA(Java Persistence API) ๋? Java ์ง์์์ ORM(Object-Relational Mapping) ๊ธฐ์ ํ์ค์ผ๋ก ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค ๋ชจ์ ์๋ฐ ์ดํ๋ฆฌ์ผ์ด์
์์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์ ์ํ ์ธํฐํ์ด์ค ์ธํฐํ์ด์ค ์ด๊ธฐ ๋๋ฌธ์ Hibernate, OpenJPA ๋ฑ์ด JPA๋ฅผ ๊ตฌํํจ ์ฅ์ ๊ฐํธํ CR..
์ธํฐ๋ท ๊ฐ์๋ฅผ ์๊ฐํ๋ค๊ฐ Thymeleaf์ Decoupled Logic ์ ๊ถ๊ธํ์ฌ ์์๋ณด๊ธฐ ์ํด์ ์์ฑ์ ํ๋ ค๊ณ ํ๋ค. Decoupled logic์ด ๋ฌด์์ผ๊น? decoupled (๋ถ๋ฆฌ๋) logic์ thymeleaf์ ๊ธฐ๋ฅ ์ค ํ๋์ด๋ค. HTML์ XML ํ
ํ๋ฆฟ์ ๋งํฌ์
๊ณผ ๋ก์ง์ด ๋ค์ด๊ฐ ๋ถ๋ถ์ ๋ถ๋ฆฌ์ํค๋ ๊ธฐ๋ฅ ๋ฐ๋ผ์ ๋์์ด๋์ ํ์
์ด ์ฌ์์ง ์ฃผ์ ์์ด๋์ด๋ ํ
ํ๋ฆฟ ๋ก์ง์ด ๋ณ๋์ ๋ก์ง ํ์ผ(ํ์ผ์ผ ํ์๋ ์์ผ๋ฏ๋ก ๋ ์ ํํ๊ฒ๋ ๋ก์ง resource์ ํด๋น)์ ์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด ๋ก์ง ๋ฆฌ์์ค๋ ํ
ํ๋ฆฟ ํ์ผ๊ณผ ๊ฐ์ ์์น(์: ํด๋)์ ์๋ ์ถ๊ฐ ํ์ผ๋ก, ์ด๋ฆ์ ๊ฐ์ง๋ง ํ์ฅ์๊ฐ .th.xml์ธ ํ์ผ /templates +->/home.html +->/home.th.xml ์์ ์๋ฅผ ๋ค์ด home.html..
Thymeleaf ๋? Thymeleaf๋ ์๋ฒ ์ธก ์๋ฐ ์น ํ
ํ๋ฆฟ ์์ง HTML, XML, JavaScript, CSS๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ์๋ฐ ํ
ํ๋ฆฟ ์์ง ์ฃผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์์ฑ ํ๊ธฐ ์ํด ์ฌ์ฉ Thymeleaf์ ๋ชฉํ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฌ์ด ํ
ํ๋ฆฟ ์์ฑ ๋ฐฉ๋ฒ์ ์ ๊ณต ์ค์ ๋ก ํ
ํ๋ฆฟ์ ์ํฅ์ ์ฃผ์ง ์๋ (HTML์ ๊ตฌ์กฐ๋ฅผ ๊นจ์ง ์๊ณ , ๊ธฐ์กด HTML ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ง๋ถ์ด๋ ์ฝ๋) ๋ฐฉ์์ ์ฌ์ฉ Natural Templates ๊ฐ๋
์ ๊ธฐ๋ฐ ์ด๋ฅผ ํตํ ๋์์ธ ํ๊ณผ ๊ฐ๋ฐ ํ๊ฐ์ ๊ฐ๋ฑ๊ณผ ๊ฒฉ์ฐจ ํด์๋ฅผ ๊ธฐ๋ Thymeleaf ์ฃผ์ ํน์ง ์์ฐ์ค๋ฌ์ด ๋ฌธ๋ฒ: Thymeleaf๋ HTML ๋ฌธ์์ ์์ฐ์ค๋ฝ๊ฒ ํตํฉ๋๋ ๋ฌธ๋ฒ์ ์ ๊ณต. ์ด๋ HTML์ ๊ทธ๋๋ก ์ ์งํ๋ฉด์ ํ
ํ๋ฆฟ ์์ง์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค..
1. Transction ์ด๋? ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณ๊ฒฝ ์ํค๋ ์์
๋๋ ํ๋ฒ์ ์ํ๋์ด์ผํ๋ ์ฐ์ฐ๋ค์ ์๋ฏธ ํธ๋์ญ์
์์
์ด ๋๋๋ฉด Commit ๋๋ Rollback ์ด ๋์ด์ผ ํ๋ค. 2. Transction์ ๋์ ์๋ฆฌ 1) ์ฐ์ ์์ - ํด๋์ค ๋ฉ์๋ > ํด๋์ค > ์ธํฐํ์ด์ค ๋ฉ์๋ > ์ธํฐํ์ด์ค ์์ผ๋ก ์ฐ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๊ณตํต์ ์ธ ํธ๋์ค ๊ท์น > ํด๋์ค (Class) ํน๋ณํ ํธ๋์ค ๊ท์น > ์ธํฐํ์ด์ค(Interface) 2) ํธ๋์ญ์
(Transction) ๋ชจ๋ ๋ฐ๋์ publice ๋ฉ์๋์ ์ ์ฉ protected, private ๋ฉ์๋์์๋ ์ ์ธ๋์ด๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง๋ ๋์๋ ํ์ง ์๋๋ค. @Transaction์ด ์ ์ฉ๋์ง ์์ public์์ @Transaction์ด ์ ์ฉ๋ public์..
Spring์ ๊ณตํต์ ์ผ๋ก ์ฌ๋ฌ ์์
์ ์ฒ๋ฆฌํจ์ผ๋ก์จ ์ค๋ณต๋ ์ฝ๋๋ฅผ ์ ๊ฑฐ ํ ์ ์๋๋ก ๋ง์ ๊ธฐ๋ฅ๋ค์ ์ง์ํ๊ณ ์๋ค. ๊ทธ ์ค์ ํํฐ(Filter)์ ์ธํฐ์
ํฐ(Interceptor)์ ์ฐจ์ด์ ๋ํด ์์๋ณด๊ณ ์ ํ๋ค. 1. ํํฐ(Filter) 1) ํํฐ(Filter) ๋? - ์๋ฐ ์๋ธ๋ฆฟ์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ - ์คํ๋ง ํ๋ ์์ํฌ์์ ํํฐ๋ก ์ธ์ฆ ๋ฑ ๋ค์ํ ์์
์ ํ๋ ๋ฐ ์ฌ์ฉํ๋ ์คํ๋ง ํ๋ ์์ํฌ์์์ ํํฐ์ ๋ํด ๊ธฐ๋ก - Spring Framework๋ ๋ค์ด์ค๋ ์์ฒญ์ด Dispatcher Servlet์ ์ํด Controller์ ๋งคํ - Filter์ ์์ฒญ์ด Dispatcher Servlet์ ์ํด ๋ค๋ค์ง๊ธฐ ์ , ํ์ ๋์ 2) ํํฐ(Filter)๋ ์ด๋์ ์ฌ์ฉํ๋? 2-1) ํํฐ ์ธํฐํ์ด์ค์ 3๊ฐ์ง ๋ฉ์๋ i..