๐ฅ๏ธ ๋ฐฑ์๋/SpringBoot22 ์ด์ 1 2 3 4 ๋ค์ [JPA] ๊ฐ์ฒด์งํฅ ์ฟผ๋ฆฌ ์ธ์ด - ๊ธฐ๋ณธ๋ฌธ๋ฒ (2) ์กฐ์ธ ๋ด๋ถ ์กฐ์ธ SELECT m FROM Member m [INNER] JOIN m.team t ์ธ๋ถ ์กฐ์ธ SELECT m FROM Member m LEFT [OUTER] JOIN m.team t ์ธํ ์กฐ์ธ SELECT count(m) FROM Member m, Team t WHERE m.username = t.name ON ์ ON์ ์ ํ์ฉํ ์กฐ์ธ(JPA 2.1๋ถํฐ ์ง์) 1. ์กฐ์ธ ๋์ ํํฐ๋ง 2. ์ฐ๊ด๊ด๊ณ ์๋ ์ํฐํฐ ์ธ๋ถ ์กฐ์ธ(ํ์ด๋ฒ๋ค์ดํธ 5.1๋ถํฐ) ์กฐ์ธ ๋์ ํํฐ๋ง ์) ํ์๊ณผ ํ์ ์กฐ์ธํ๋ฉด์, ํ ์ด๋ฆ์ด A์ธ ํ๋ง ์กฐ์ธ [JPQL] SELECT m, t FROM Member m LEFT JOIN m.team t on t.name = 'A' [SQL] SELECT m.*, t.* FROM Me.. 2023. 11. 26. [JPA] ๊ฐ์ฒด์งํฅ ์ฟผ๋ฆฌ ์ธ์ด - ๊ธฐ๋ณธ๋ฌธ๋ฒ (1) JPQL Java Persistence Query Language ๊ฐ์ฒด์งํฅ ์ฟผ๋ฆฌ ์ธ์ด. ํ ์ด๋ธ ๋์X ์ํฐํฐ ๊ฐ์ฒด๋ฅผ ๋์O ์ผ๋ก ์ฟผ๋ฆฌ SQL์ ์ถ์ฑํํ๋ฏ๋ก ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค SQL์ ์์กดํ์ง ์์ ๊ฒฐ๊ตญ SQL๋ก ๋ณํ JPQL ๋ฌธ๋ฒ select m from Member as m where m.age > 14 ์ํฐํฐ์ ์์ฑ์ ๋์๋ฌธ์ ๊ตฌ๋ถํจ O(Memeber, age ๊ฐ์ฒด๊ฐ ๊ฐ์ง ๊ฒ๊ณผ ๋์๋ฌธ์ ๋์ผํด์ผ) JPQL ํค์๋๋ ๋์๋ฌธ์ ๊ตฌ๋ถํ์ง ์์(SELECT select FROM from WHERE where) ์ํฐํฐ ์ด๋ฆ์ ์ฌ์ฉํ๋ค(ํ ์ด๋ธ ์ด๋ฆ์ด ์๋) ๋ณ์นญ์ด ํ์ m (as๋ ์๋ต ๊ฐ๋ฅํ์ง๋ง ๊ฐ๊ธ์ ์ฐ๋ฉด ์ข์) ์งํฉ, ์ ๋ ฌ ๋ฑ ํจ์ ๊ฐ๋ฅ (COUNT, SUM, AVG, MAX, GROUP BY, ORDER.. 2023. 11. 26. [์คํ๋ง๋ถํธ ํต์คํํธ] ch.5 ์คํ๋ง๋ฐ์ดํฐ JPA CrudRepository ์ธํฐํ์ด์ค ์ฟผ๋ฆฌ ๋ฉ์๋ @Query ์ ๋ํ ์ด์ Querydsl โถ์คํ๋ง ๋ฐ์ดํฐ JPA ํต์คํํธ ์คํ๋ง๋ถํธ๋ JPA ์ฐ๋์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๊ณผ ๋ณต์กํ XML์ค์ ์ ์๋์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด JPA์คํํฐ๋ฅผ ์ ๊ณตํจ โ โท ์คํ๋ง ๋ฐ์ดํฐ JPA ์ฌ์ฉํ๊ธฐ ๊ธฐ๋ณธ์ค์ : application.propertiesํ์ผ์์ DataSource, JPA, Logging Setting Repository ์ธํฐํ์ด์ค๋ค์ ์์ ๊ตฌ์กฐ ์ต๊ณ ์กฐ์, ๊ธฐ๋ฅ ๊ฑฐ์ ์์ Repository Spring Data ๋ชจ๋์์ ์ ๊ณต ๋๋ถ๋ถ ์ด๊ฒ ๊ธฐ๋ณธ์ ์ธ CRUD ๊ธฐ๋ฅ ์ ๊ณต CrudRepository ๊ฒ์๊ธฐ๋ฅ + ํ์ด์ง ์ฒ๋ฆฌ PagingAndSortingRepository JpaRepository Spring Data JPA.. 2023. 11. 23. [์คํ๋ง๋ถํธ ํต์คํํธ] ch.4 JPA API persistence.xml EntityManagerFactory EntityManager โถJPA ๊ฐ๋ โทJPA ๊ฐ๋ ORM : ๊ฐ์ฒด-๊ด๊ณ-๋งคํ์ ์ฝ์. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ๋ฐ์ดํฐ ๋ณํ์ ์๋ํํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ (Object-Relational-Mapping) JPA : ORM๋ค์ ๋ณด๋ค ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ์คํ์ํจ ๊ฒ(Java Persistence API) ์คํ๋ง ๋ฐ์ดํฐ JPA : ์คํ๋ง๋ถํธ์์ ์ด๋ฐ JPA๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํ๋ ๋ชจ๋. SpringData์ ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, XML ์ค์ ์ ์ ๊ฒฝ ์ฐ์ง ์์๋ ๋จ. โ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ๊ธฐ์ SQL์ ์ง์ ๋ค๋ฃจ๋ ๊ธฐ์ SQL์ ์ง์ ๋ค๋ฃจ์ง ์๋ ๊ธฐ์ SQL์ ๊ฐ๋ฐ์๊ฐ ์ง์ XMLํ์ผ์ ๋ฑ๋กํด์ ์ฌ์ฉํจ ํ.. 2023. 11. 23. [์คํ๋ง๋ถํธ ํต์คํํธ] ch.3 ํ ์คํธ, ๋ก๊น , ๋น๋ @SpringBootTest logging.level.com.rebypaper=trace โโถํ ์คํธ @SpringBootTest ์ ๋ํ ์ด์ ์ ๋ถ์ด๋ฉด ๋ณต์กํ ํ ์คํธ ์ค์ ๋ค์ ์๋์ผ๋ก ์ฒ๋ฆฌํ๊ณ , ํ ์คํธ ๊ด๋ จ ๊ฐ์ฒด๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ค ๊ด๋ จ์์ฑ properties : ํ ์คํธ๊ฐ ์คํ๋๊ธฐ ์ ์ ํ ์คํธ์์ ์ฌ์ฉํ ์ค๋กํผํฐ๋ค์ k=yํํ๋ก ์ถ๊ฐํ๊ฑฐ๋ properties ํ์ผ์ ์ค์ ๋ ํ๋กํผํฐ๋ฅผ ์ฌ์ ์ํจ classes : ํ ์คํธํ ํด๋์ค๋ค์ ๋ฑ๋กํจ. ์๋ต์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์๋ ๋ชจ๋ ๋น์ ์์ฑํจ webEnvironment : ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋ ๋ ์น๊ณผ ๊ด๋ จ๋ ํ๊ฒฝ์ค์ ๊ฐ๋ฅ โโ ๋ชจํน : ํ ์คํธ๋ฅผ ์ํด ์ค์ ๊ฐ์ฒด์ ๋น์ทํ ๋ชจ์ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ฒ ๋ชฉ์ : ๋ชจํนํ ๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ์ป์ด๋ด๋ ๊ณผ์ ๋ชจํนํ๋ ค๋ฉด @WebMvcT.. 2023. 11. 23. [์คํ๋ง๋ถํธ ํต์คํํธ] ch.2 ์์กด์ฑ๊ณผ ์๋์ค์ ๊ธฐ๋ณธ์ ์ธ ์ค์ ์ ์๋์ผ๋ก ์ฒ๋ฆฌ, ํ์ํ ๋งํผ์ ๊ธฐ๋ฅ๋ง ์ฌ์ ์ํ์ฌ ์ฌ์ฉํ๊ธฐ โท์คํ๋ง๋ถํธ์ ํต์ฌ์์ โ ์คํํฐ : ํน์ ๋ชจ๋ ์ฌ์ฉ์ ๊ด๋ จ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋ฌถ์ด์ ๋ง์น ํจํค์ง์ฒ๋ผ ์ ๊ณต. โก์๋์ค์ : ๋น ์ค์ ์ ์๋์ผ๋ก ์ฒ๋ฆฌํจ โข์ก์ถ์์ดํฐ : ์คํ๋ง๋ถํธ๋ก ๊ฐ๋ฐ๋ ์์คํ ์ ๋ชจ๋ํฐ๋ง ํ ์ ์๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํจ โ โถ์์กด์ฑ๊ด๋ฆฌ ์คํํฐ์ ์๋ฆฌ : (๋ฉ์ด๋ธ)์คํํฐ์ ์๋ POMํ์ผ์ ์์ ๊ตฌ์กฐ. ์๋ฆฌ๋จผํธ ์ฌ์ฉ. ํ๋กํผํฐ ์ฌ์ ์ ๋ฉ์ด๋ธ(pom.xml) org.springframework.boot spring-boot-starter-web 2.5.4 ๊ทธ๋ ์ด๋ค(build.gradle) dependencies { // ๋ค๋ฅธ ์์กด์ฑ๋ค implementation 'org.springframework.boot:spring-b.. 2023. 11. 23. [๋ณด์] ์ฟ ํค์ ์ธ์ ๊ทธ๋ฆฌ๊ณ JWT ์ธ์ , ์ฟ ํค, JWT๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ธ์ฆ ๋ฐ ์ธ์ ๊ด๋ฆฌ์ ์ฌ์ฉ๋๋ ์ค์ํ ๊ธฐ์ ์ฟ ํค (Cookies) ์ฟ ํค๋ ํด๋ผ์ด์ธํธ ์ธก(๋ธ๋ผ์ฐ์ )์ ์ ์ฅ๋๋ ์์ ๋ฐ์ดํฐ ์กฐ๊ฐ๋ค ์ฅ์ : ๊ฐ๋จํ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ์ถ์ ์ ์ ํฉํฉ๋๋ค. ์ธ์ ๊ด๋ฆฌ, ์ฌ์ฉ์ ์ธ์ฆ, ์ฌ์ฉ์ ์ ํธ๋ ๋ฑ์ ์ ์งํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋จ์ : ์ฉ๋ ์ ํ(๋๋ต 4KB)์ด ์์ต๋๋ค. ๋งค HTTP ์์ฒญ๋ง๋ค ์ฟ ํค ๋ฐ์ดํฐ๊ฐ ์๋ฒ๋ก ์ ์ก๋๋ฏ๋ก, ๋คํธ์ํฌ ํธ๋ํฝ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. XSS(Cross-Site Scripting)์ ๊ฐ์ ๋ณด์ ์ทจ์ฝ์ ์ ๋ ธ์ถ๋ ์ ์์ต๋๋ค. ์ฌ์ฉ ๋ฐฉ๋ฒ: ์ฟ ํค๋ Set-Cookie ํค๋๋ฅผ ํตํด ์์ฑ๋๋ฉฐ, ๋ธ๋ผ์ฐ์ ๋ ์ดํ ์์ฒญ์ Cookie ํค๋๋ฅผ ์๋์ผ๋ก ํฌํจ์ํต๋๋ค. HttpOnly, Secure, SameSite ๋ฑ์ ์์ฑ.. 2023. 11. 23. ์ด์ 1 2 3 4 ๋ค์