Java/Spring 26

[SpringBoot] ์Šคํ”„๋ง ๋ถ€ํŠธ 3.2.3์—์„œ Swagger(springdoc) ์‚ฌ์šฉํ•˜๊ธฐ!

๐Ÿ“Œํ™˜๊ฒฝ IntelliJ Ultimate Java 17 Spring boot 3.2.3 Gradle - Groovy Dependencies: Spring Web Thymeleaf Spring Data JPA lombok MariaDB 10.11 Spring Dev tool ์ด์ „ ๊ธ€์—์„œ springfox ๋Œ€์‹  springdoc์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค. springfox์™€ springdoc๋Š” ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์ด ์กฐ๊ธˆ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ฐจ๊ทผ์ฐจ๊ทผ ๋”ฐ๋ผ๊ฐ€๋˜ ์ฑ…์ด๋‚˜ ๊ฐ•์˜์—์„œ springfox๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ง„ํ–‰์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค. ๋‚˜ ์—ญ์‹œ ๊ทธ ๋ฌธ์ œ๋ฅผ ๊ฒช์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ธ€์„ ์ž‘์„ฑํ•œ๋‹ค. ๋‚ด๊ฐ€ ์ฐธ๊ณ ํ•œ ์ฑ…(์ž๋ฐ” ์›น ๊ฐœ๋ฐœ ์›Œํฌ๋ถ)์—์„œ๋Š” REST ๋ฐฉ์‹์œผ๋กœ ๋Œ“๊ธ€์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด `ReplyDTO`๋ฅผ ๋งŒ๋“ค๊ณ , JSON์œผ๋กœ swagge..

Java/Spring 2024.03.13

[SpringBoot] Swagger ์‚ฌ์šฉ ์‹œ ์˜ค๋ฅ˜

๐Ÿ“Œํ™˜๊ฒฝ IntelliJ Ultimate Java 17 Spring boot 3.2.3 Gradle - Groovy Dependencies: Spring Web Thymeleaf Spring Data JPA lombok MariaDB 10.11 Spring Dev tool ๐Ÿ“Œ๋ฌธ์ œ Swagger Configuration ์ž‘์„ฑ ์‹œ ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ ์ •์  ๋ฆฌ์†Œ์Šค ๋‚ด ๋ชจ๋“  ํŒŒ์ผ์ด ์ธ์‹๋˜์ง€ ๋ชปํ•จ(No mapping GET...), swagger-ui/index.html๊ฐ€ 404๋กœ ๋œจ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๊ธ€์„ ์ž‘์„ฑํ•œ๋‹ค. dependencies { ... // swagger implementation 'io.springfox:springfox-boot-starter:3.0.0' implementation 'io.sprin..

Java/Spring 2024.03.13

[SpringBoot/JPA] ๊ฒ€์ƒ‰์„ ํฌํ•จํ•œ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ DTO

๐Ÿ“Œํ™˜๊ฒฝ IntelliJ Ultimate Java 17 Spring boot 3.2.3 Gradle - Groovy Dependencies: Spring Web Thymeleaf Spring Data JPA lombok MariaDB 10.11 Spring Dev tool ๐Ÿ“Œํ๋ฆ„ ๊ฒŒ์‹œ๊ธ€ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜์—ฌ ํŽ˜์ด์ง•ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, ํ˜„์žฌ ์š”์ฒญํ•˜๋Š” ํŽ˜์ด์ง€, ํŽ˜์ด์ง€๋‹น ๊ฒŒ์‹œ๊ธ€ ์ˆ˜, ๊ฒ€์ƒ‰ ํƒ€์ž…, ๊ฒ€์ƒ‰ ํ‚ค์›Œ๋“œ, ๋งํฌ๋ฅผ ์š”์ฒญํ•˜๋Š” ์š”์ฒญ DTO ๊ฐ์ฒด์™€ ํ˜„์žฌ ํŽ˜์ด์ง€, ํŽ˜์ด์ง€๋‹น ๊ฒŒ์‹œ๊ธ€ ์ˆ˜, ์ด์ „/๋‹ค์Œ ํŽ˜์ด์ง€ ์กด์žฌ ์—ฌ๋ถ€, ๊ฒŒ์‹œ๊ธ€๋“ค์„ ๋‹ด์„ list๋ฅผ ํฌํ•จํ•œ ์‘๋‹ต DTO ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜๋‹ค. package org.zerock.b02.dto; import lombok.AllArgsConstructor; import lombok.B..

Java/Spring 2024.03.13

[SpringBoot/JPA] ModelMapper๋กœ Entity์™€ DTO ๋ณ€ํ™˜ํ•˜๊ธฐ

๐Ÿ“Œํ™˜๊ฒฝ IntelliJ Ultimate Java 17 Spring boot 3.2.3 Gradle - Groovy Dependencies: Spring Web Thymeleaf Spring Data JPA lombok MariaDB 10.11 Spring Dev tool ๐Ÿ“ŒModelMapper๋ž€? ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๊ฐ’์„ ํ•œ๋ฒˆ์— ๋ณต์‚ฌ(๋งคํ•‘)ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ์˜ˆ๋ฅผ ๋“ค์–ด, ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์™€ ์ผ์น˜ํ•˜๋Š” ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๊ฐ€ ์žˆ๊ณ  ์ด ๊ฐ’์„ DTO์— ๋‹ด๊ฑฐ๋‚˜ ํ˜น์€ ๊ทธ ๋ฐ˜๋Œ€์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ํ•„๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ๋งคํ•‘์‹œํ‚จ๋‹ค๋ฉด ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜ ๊ฐ’์ด ๋ณ€์งˆ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. `modelMapper`๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—”ํ‹ฐํ‹ฐ์™€ DTO์˜ ๋ณ€ํ™˜์„ ๊ฐ„๋‹จํžˆ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ“Œํ๋ฆ„ 1. `build.gradle`์— `..

Java/Spring 2024.03.13

[SpringBoot/JPA] Querydsl์„ ์‚ฌ์šฉํ•œ ๋™์ ์ฟผ๋ฆฌ

๐Ÿ“Œํ™˜๊ฒฝ IntelliJ Ultimate Java 17 Spring boot 3.2.3 Gradle - Groovy Dependencies: Spring Web Thymeleaf Spring Data JPA lombok MariaDB 10.11 Spring Dev tool ๐Ÿ“ŒQuerydsl์ด๋ž€? Querydsl์€ JPA์˜ ๊ตฌํ˜„์ฒด์ธ Hibernate ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” HQL(Hibernate Query Language)๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งํ•œ๋‹ค. JPA๋ฅผ ์ง€์›ํ•˜๋ฉฐ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ž…์˜ ์•ˆ์ •์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์›ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. Querydsl์˜ ๋ชฉ์ ์€ ํƒ€์ž… ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด JPQL ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๐Ÿ“Œ์‚ฌ์šฉํ•˜๊ธฐ Querydsl๋ฅผ ์‚ฌ..

Java/Spring 2024.03.12

[SpringBoot/JPA] ์ฟผ๋ฆฌ ๋ฉ”์†Œ๋“œ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” @Query

์ฟผ๋ฆฌ ๋ฉ”์†Œ๋“œ๋ž€ SQL์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ์™€ ์ปฌ๋Ÿผ์„ ๊ฒฐํ•ฉํ•ด ๊ตฌ์„ฑํ•˜์—ฌ ๊ทธ ์ž์ฒด๊ฐ€ JPA์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ๊ฐ€ ๋˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ `findById` ์ฒ˜๋Ÿผ ์ปฌ๋Ÿผ๋ช…๊ณผ ํ‚ค์›Œ๋“œ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๊ตฌ์„ฑํ•œ๋‹ค. ์•„๋ž˜ ๊ธ€์„ ์ฐธ๊ณ  Spring Data JPA(์ฟผ๋ฆฌ ๋ฉ”์†Œ๋“œ) Spring Data JPA๋กœ ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๋“ค์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. • ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์œผ๋กœ ์ฟผ๋ฆฌ ์ƒ์„ฑ ์ฟผ๋ฆฌ ๋ฉ”์†Œ๋“œ๋Š” Repository ์ธํ„ฐํŽ˜์ด์Šค์— ๊ฐ„๋‹จํ•œ ๋„ค์ด๋ฐ ๋ฃฐ์„ ์ด์šฉํ•˜์—ฌ ๋ฉ”์†Œ๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์›ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ kihwan95.tistory.com ์˜ˆ๋ฅผ ๋“ค์–ด ์ œ๋ชฉ์— ํŠน์ • ํ‚ค์›Œ๋“œ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒŒ์‹œ๊ธ€์„ bno์˜ ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ๋‹ค๋ฉด ์ฟผ๋ฆฌ ๋ฉ”์†Œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. Page findByTitleContainingOrderByBnoDesc(Strin..

Java/Spring 2024.03.12

[Spring/JPA] Spring Data JPA๋กœ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌํ•˜๊ธฐ

๐Ÿ“Œํ™˜๊ฒฝ IntelliJ Ultimate Java 17 Spring boot 3.2.3 Gradle - Groovy Dependencies: Spring Web Thymeleaf Spring Data JPA lombok MariaDB 10.11 Spring Dev tool ๐Ÿ“Œ ํ๋ฆ„ CRUD๋Š” ์ด์ œ (๊ฑฐ์ง“๋ง ์กฐ๊ธˆ ๋ณดํƒœ์„œ) ๋ˆˆ ๊ฐ๊ณ ๋„ ํ•˜๋ผ๋ฉด ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ๋Š” ํ•ญ์ƒ ํ•˜๊ธฐ ์‹ซ๋‹ค ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋”๋””๊ณ  ์‹ค์ˆ˜๋„ ์žฆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด Spring Data JPA๋Š” ํŽ˜์ด์ง• ๊ธฐ๋Šฅ๋„ ๊ตฌํ˜„ํ•ด๋‘์—ˆ๋‹ค. ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ๋Š” `Pageable`ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑํ•ด์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋ฉด ๋œ๋‹ค. `Pageable`์€ ์ธํ„ฐํŽ˜์ด์Šค๋กœ, ์ผ๋ฐ˜์ ์œผ๋กœ `PageRequest.of()`๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. `PageRequest.of(ํŽ˜์ด์ง€๋ฒˆํ˜ธ, ์‚ฌ์ด์ฆˆ..

Java/Spring 2024.03.12

[SpringBoot/JPA] Spring Data JPA๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒŒ์‹œํŒ CRUD

๐Ÿ“Œํ™˜๊ฒฝ IntelliJ Ultimate Java 17 Spring boot 3.2.3 Gradle - Groovy Dependencies: Spring Web Thymeleaf Spring Data JPA lombok MariaDB 10.11 Spring Dev tool ๐Ÿ“Œ Spring Data JPA๋กœ SQL๋ฌธ ์ž‘์„ฑ ์—†์ด CRUDํ•˜๊ธฐ โœ๏ธ CREATE(INSERT) ๊ธ€ ๋ฒˆํ˜ธ, ์ œ๋ชฉ, ๋‚ด์šฉ, ๊ธ€์“ด์ด๋ฅผ ๊ฐ€์ง„ `Board` ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. package org.zerock.b02.domain; public class Board extends BaseEntity { private Long bno; private String title; private String content; private St..

Java/Spring 2024.03.12

[SpringBoot] Querydsl ์„ค์ • ์‹œ ์˜ค๋ฅ˜

๐Ÿ“Œํ™˜๊ฒฝ Spring boot 3.2.3 Gradle - Groovy Java 17 ์Šคํ”„๋ง๋ถ€ํŠธ 3.0 ์ด์ƒ๋ถ€ํ„ฐ๋Š” ์„ค์ •์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค. 3.0 ์ด์ „ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ์ฑ…์ด๋‚˜ ๊ฐ•์˜์—์„œ ์„ค๋ช…ํ•˜๋Š” ์„ค์ •์ด ๋‹ค๋ฅด๋ฏ€๋กœ ์ฃผ์˜ํ•œ๋‹ค. 1. javax ๋Œ€์‹  jakarta๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฏ€๋กœ `build.gradle`์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค. buildscript { ext { queryDslVersion = "5.0.0" } } . . . dependencies { implementation "com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta" annotationProcessor( "jakarta.persistence:jakarta.persistence-api", "jakarta.anno..

Java/Spring 2024.03.11

[Spring] summernote ์—๋””ํ„ฐ๋กœ ์ด๋ฏธ์ง€๊ฐ€ ํฌํ•จ๋œ ๊ธ€ ์—…๋กœ๋“œํ•˜๊ธฐ

๐Ÿ“Œ ํ™˜๊ฒฝ Spring Tool Suite 3 (STS3) ์Šคํ”„๋ง ๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ ๐Ÿ“Œ ํ๋ฆ„ 1. summernote api๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. 1-1. ๋ถ€ํŠธ์ŠคํŠธ๋žฉ๊ณผ ์ถฉ๋Œ์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” summernote lite๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 2. ํŒŒ์ผ ์—…๋กœ๋“œ๋ฅผ ์œ„ํ•ด `pom.xml`์— `gson` `common-io` `commons-fileupload` ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค. 3. `textarea` id๋ฅผ summernote๋กœ ์ž‘์„ฑํ•˜๋ฉด summernote ์—๋””ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์–ด๋จธ ๋ฏธ์นœ ํƒœ๊ทธ๊ฐ€ ๋™์ž‘ํ•ด๋ฒ„๋ฆผ `` 4. ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์œ„์น˜์— ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•ด ์—๋””ํ„ฐ์— summernote์—์„œ ์ œ๊ณตํ•˜๋Š” callbakcs ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 5. ajax๋กœ Controller ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด ํŒŒ์ผ..

Java/Spring 2024.02.22