์ค๋ ๊ณต๋ถํ ๋ด์ฉ
- [์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ] 14์ฅ, ์ปฌ๋ ์ ๊ณผ ๋ถ๊ฐ ๊ธฐ๋ฅ ๊ณต๋ถ
- [์ค์ ์คํ๋ง ๋ฐ์ดํฐ JPA] ๋ชจ๋ ๋ฃ๊ณ ์ ๋ฆฌํ๊ธฐ
- [์ด๊ฒ์ด ์ทจ์ ์ ์ํ ์ฝ๋ฉ ํ ์คํธ๋ค] ๊ตฌํ - ์์ค์ ๋์ดํธ ๋ฌธ์ ํ๊ธฐ
๐ญ๋๋ ์ & ๋ฐฐ์ด ์
- JPA ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ๋ค์ ๋ค ์๊ณ ์์๋ค ์๊ฐํ๋๋ฐ, ์ฒ์ ๋ณด๋ ๊ฐ๋ ๊ณผ ์ฉ์ด๋ค์ด ๋์์ ์กฐ๊ธ ๋นํฉํ๋ค. ๋ฆฌ์ค๋๋ผ๋๊ฐ ์ปจ๋ฒํฐ ๋ผ๋ ๊ฒ๋ค์ ์ ํ ์๊ฐ๋ ๋ชป ํ๊ณ ์์๋๋ฐ, ๊ฐ์๋ง ๋ณด๋ ๊ฒ์ด ์๋ ์ฑ ๋ ๊ฐ์ด ๋ณด๋ฉด์ ๋ณต์ตํ๊ธฐ๋ฅผ ์ฐธ ์ํ ๊ฒ ๊ฐ๋ค.
- ์คํ๋ง ๋ฐ์ดํฐ JPA๋ ์๊ฐ๋ณด๋ค ์์ด ์ ์๊ณ , ์๋ก์ด ๋ด์ฉ๋ค์ด ๊ทธ๋ฅ ๋ง์ง๋ ์์ ๋น ๋ฅด๊ฒ ๋์ด๊ฐ ์ ์์๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋๋ Persistable์ด๋ผ๋๊ฐ ๋ฑ์ ๊ธฐ์ต๋์ง ์์๋ ๋ด์ฉ๋ค์ ๋ค์๊ธ ๋ฃ๊ณ ์ ๋ฆฌํ๋ ์ข์๋ค!
- ๊ตฌํ ๋ฐ ์์ ํ์ ๋ฑ์ ์๊ณ ๋ฆฌ์ฆ์์ ๋ฐฉํฅ ๋ฒกํฐ๋ฅผ ํตํด ๋ค์ ์์น๋ก ์ด๋์ํค๋ 2๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด์์, ์ด๋ฌํ ๋ฐฉ๋ฒ์ ๋ง์ด ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋ฐฐ์ ๋ค
๐ฅ๋ด์ผ ๊ณต๋ถํ ๋ด์ฉ
- [์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ] 15์ฅ ๊ณต๋ถํ๊ธฐ
- [์ค์ ์ฟผ๋ฆฌ DSL] ๋ชจ๋ ๋ฃ๊ณ ์ ๋ฆฌํ๊ธฐ.
- [์ค๋ธ์ ํธ] 7์ฅ ๋ฃ๊ธฐ
+
์ค๋์ ์กฐ๊ธ ์ ์ข์ ์ผ์ด ์๊ฒจ์ ๊ณต๋ถ๋ฅผ ๋ง์ด ๋ชป ํ๋ค.
์ค๋ ๊ณต๋ถํ ๋ด์ฉ ํฌ์คํ
[JPA] @OrderBy - ๋ฆฌ์คํธ์ ์์ ์ง์ ํ๊ธฐ
@OrderBy @OrderColum์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์์ฉ ์ปฌ๋ผ์ ๋งคํํด์ ๊ด๋ฆฌํ๋ค๋ฉด, @OrderBy๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ORDER BY ์ ์ ์ฌ์ฉํด์ ์ปฌ๋ ์ ์ ์ ๋ ฌํ๋ค. ๋ฐ๋ผ์ ์์์ฉ ์ปฌ๋ผ์ ๋งคํํ ํ์๋ ์๊ณ , ๋ํ @Orde
ttl-blog.tistory.com
[JPA] JPA๊ฐ ์ง์ํ๋ ์ปฌ๋ ์
์ปฌ๋ ์ JPA์์๋ ์๋ฐ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ Collection, List, Set, Map ์ปฌ๋ ์ ์ ์ง์ํ๊ณ ๋ค์ ๊ฒฝ์ฐ์ ์ด ์ปฌ๋ ์ ์ ์ฌ์ฉํ ์ ์๋ค. @OneToMany, @ManyToMany ๋ฅผ ์ฌ์ฉํด์ '์ผ๋๋ค' ํน์ '๋ค๋๋ค' ์ํฐํฐ.
ttl-blog.tistory.com
[JPA] @Converter
@Converter ์ปจ๋ฒํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ํฐํฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณํ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ ์ ์๋ค. ์๋ฅผ ๋ค์ด์ ํ์์ VIP์ฌ๋ถ๋ฅผ ์๋ฐ์ boolean ํ์ ์ ์ฌ์ฉํ๊ณ ์ถ๋ค๊ณ ํ์. JPA๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฐ์ boolean
ttl-blog.tistory.com
[JPA] ๋ฆฌ์ค๋ - ์ํฐํฐ์ ์๋ช ์ฃผ๊ธฐ์ ๋ฐ๋ฅธ ์ด๋ฒคํธ ์ฒ๋ฆฌ
๋ฆฌ์ค๋ ๋ชจ๋ ์ํฐํฐ๋ฅผ ๋์์ผ๋ก ์ธ์ ์ด๋ค ์ฌ์ฉ์๊ฐ ์ญ์ ๋ฅผ ์์ฒญํ๋์ง ๋ชจ๋ ๋ก๊ทธ๋ก ๋จ๊ฒจ์ผ ํ๋ ์๊ตฌ์ฌํญ์ด ์๋ค๊ณ ๊ฐ์ ํ์. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ญ์ ๋ก์ง์ ํ๋ ํ๋ ์ฐพ์๊ฐ๋ฉฐ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ
ttl-blog.tistory.com
[Spring Data JPA] - ์ฟผ๋ฆฌ ๋ฉ์๋ ๊ธฐ๋ฅ
์ฟผ๋ฆฌ ๋ฉ์๋์ ๊ธฐ๋ฅ ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ์ ๊ณตํ๋ ์ฟผ๋ฆฌ ๋ฉ์๋์ ๊ธฐ๋ฅ์ 3๊ฐ์ง๊ฐ ์๋ค. ๋ฉ์๋์ ์ด๋ฆ์ผ๋ก ์ฟผ๋ฆฌ ์์ฑ ๋ฉ์๋์ ์ด๋ฆ์ผ๋ก JPA์ NamedQuery ํธ์ถ ์ ์ฌ์ฉํ์ง ์์ผ๋ ๋์ด๊ฐ๊ฒ ๋ค! @Quer
ttl-blog.tistory.com
[Spring Data JPA] - ๋ฐํ ํ์ ์ ์ข ๋ฅ
JPA์ ๋ฐํ ํ์ ์ ์ข ๋ฅ List : ์ปฌ๋ ์ , ๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฉด ๋น ์ปฌ๋ ์ ๋ฐํ(null์ด ์๋๋ค) Member : ๋จ๊ฑด(๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฉด ๊ฒฐ๊ณผ๊ฐ null, ๊ฒฐ๊ณผ๊ฐ 2๊ฐ์ด๋ฉด ์๋ฌ ๋ฐ์) Optional : ๋จ๊ฑด optional(๊ฒฐ๊ณผ๊ฐ 2๊ฐ์ด๋ฉด ์๋ฌ ๋ฐ
ttl-blog.tistory.com
[Spring Data JPA] ๋ฒํฌ ์ฐ์ฐ
Spring Data JPA์์์ ๋ฒํฌ ์ฐ์ฐ @Modifying์ ๊ผญ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค! public interface MemberRepository extends JpaRepository { @Modifying @Query("update Member m set m.age = m.age + 1 where m.age =:age"..
ttl-blog.tistory.com
[Spring Data JPA] @EntityGraph - ํ์น ์กฐ์ธ์ ํธํ๊ฒ
@EntityGraph JPQL์ ํ์น ์กฐ์ธ์ ์กฐ๊ธ ๋ ํธํ๊ฒ ์ธ ์ ์๊ฒ DATA JPA์์ ์ ๊ณตํด์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค. public interface MemberRepository extends JpaRepository { //๊ณตํต ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ @Override @EntityGraph(..
ttl-blog.tistory.com
[Spring Data JPA] ์ฝ๊ธฐ ์ ์ฉ ์ฟผ๋ฆฌ ๋ง๋ค๊ธฐ (feat. JPA Hint)
์กฐํํ์ฌ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ ์ฝ๊ธฐ ์ ์ฉ ์ฟผ๋ฆฌ ๋ง๋ค๊ธฐ public interface MemberRepository extends JpaRepository { @QueryHints ( value=@QueryHint(name = "org.hibernate.readOnly", value = "true") ) Member..
ttl-blog.tistory.com
[Spring Data JPA] ์ฌ์ฉ์ ์ ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ตฌํ (+์ถ๊ฐ @EnableJpaRepositories)
์ฌ์ฉ์ ์ ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ตฌํ๋ฐฉ๋ฒ ์คํ๋ง ๋ฐ์ดํฐ JPA ๋ฆฌํฌ์งํ ๋ฆฌ๋ ์ธํฐํ์ด์ค๋ง ์ ์ํ๊ณ ๊ตฌํ์ฒด๋ ์คํ๋ง์ด ์๋์ผ๋ก ์์ฑํด์ค๋ค. ๊ทธ๋ฌ๋ ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ์ ๊ณตํด์ฃผ๋ ๊ธฐ๋ฅ ์ด์ธ์ ์ถ๊ฐ๋ก
ttl-blog.tistory.com
[Spring Data JPA] Auditing
Auditing ์ํฐํฐ๋ฅผ ์์ฑ, ๋ณ๊ฒฝํ ๋์ ์๊ฐ๊ณผ, ๋ณ๊ฒฝํ ์ฌ๋์ ์ถ์ ํ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? ์์ํ๊ฒ JPA๋ง ์ด๋ค๋ฉด @PrePersist ๋ฑ์ ๋ฆฌ์ค๋๋ฅผ ๋ฑ๋กํด์ ๋ฑ๋ก๋๋ ์์ ์ ์๊ฐ๊ณผ ์ฌ๋ ๋ฑ์ ์ ์ฅํ
ttl-blog.tistory.com
[Spring Data JPA] JPA ํ์ฅ ๊ธฐ๋ฅ - ๋๋ฉ์ธ ํด๋์ค ์ปจ๋ฒํฐ
์คํ๋ง ๋ถํธ ์ฌ์ฉ ์์๋ง ์๋ฌด ๋ฑ๋ก ์์ด ์ฌ์ฉ ๊ฐ๋ฅํ๋ค! ์ฌ์ฉ ์ @RestController @RequiredArgsConstructor public class MemberController { private final MemberRepository memberRepository; @GetMapping("/..
ttl-blog.tistory.com
[Spring Data JPA] MVC์์์ ํ์ด์ง๊ณผ ์ ๋ ฌ ์ฌ์ฉ
์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ์ ๊ณตํ๋ ํ์ด์ง๊ณผ ์ ๋ ฌ ๊ธฐ๋ฅ์ ์คํ๋ง MVC์์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. @GetMapping("/members") public Page list(Pageable pageable) { Page page = memberRepository.findAll(pageable)..
ttl-blog.tistory.com
[Spring Data JPA] Persistable (feat. ์๋ก์ด ์ํฐํฐ๋ฅผ ๊ตฌ๋ณํ๋ ๋ฐฉ๋ฒ)
JPA๋ ์๋ณ์ ์์ฑ ์ ๋ต์ด @GenerateValue์ด๋ฉด save() ํธ์ถ ์์ ์ ์๋ณ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋ก์ด ์ํฐํฐ๋ก ์ธ์ํด์ ์ ์ ๋์ํ๋ค. ๊ทธ๋ฐ๋ฐ JPA ์๋ณ์ ์์ฑ ์ ๋ต์ด ์ง์ ํ ๋น์ธ ๊ฒฝ์ฐ(@Id๋ง ์ฌ์ฉํ๋ ๊ฒฝ
ttl-blog.tistory.com
[์๊ณ ๋ฆฌ์ฆ] ์์ค์ ๋์ดํธ(๊ตฌํ)
์์ค์ ๋์ดํธ ํ๋ณต ์๊ตญ์ ์์ค ์ ์์ ์ฒด์คํ๊ณผ ๊ฐ์ 8 X 8 ์ขํ ํ๋ฉด์ด๋ค. ์์ค ์ ์์ ํน์ ํ ํ ์นธ์ ๋์ดํธ๊ฐ ์ ์๋ค. ๋์ดํธ๋ ๋ง์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๋์ ํ ๋๋ L๊ณผ ๊ฐ์ ํํ๋ก๋ง
ttl-blog.tistory.com
[์๊ณ ๋ฆฌ์ฆ] ๋ฐฉํฅ ๋ฒกํฐ - ๊ตฌํ ๋ฐ ์์ ํ์์์์ ์ฌ์ฉ
๋ฐฉํฅ ๋ฒกํฐ๋ ๊ตฌํ ๋ฐ ์์ ํ์ ์๊ณ ๋ฆฌ์ฆ์์ ๋ง์ด ์ฐ์ด๋ฏ๋ก ๋ฐ๋ก ์ ๋ฆฌํ๋ค. ์ด์ฐจ์ ๋ฐฐ์ด๊ณผ, ํ์ฌ ์์น๊ฐ ์ฃผ์ด์ง๊ณ , ์์ง์ผ ์ ์๋ ๋ฐฉ๋ฒ์ ์ง์ ํด ์ค ๊ฒฝ์ฐ ๋ฐฉํฅ ๋ฒกํฐ๋ฅผ ํตํด ์์ง์ผ ์ ์๋ ๊ฒฝ
ttl-blog.tistory.com
'๐ณ TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] 2021-12-23 (0) | 2021.12.23 |
---|---|
[TIL] 2021-12-22 (0) | 2021.12.23 |
[TIL] 2021-12-20 (0) | 2021.12.20 |
[TIL] 2021-12-19 (0) | 2021.12.19 |
[TIL] 2021-12-18 (0) | 2021.12.18 |