Java 29

[SpringBoot/JPA] deleteById์— ์ž˜๋ชป๋œ ๊ฐ’์„ ๋„ฃ์–ด๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ

๐Ÿ“Œํ™˜๊ฒฝ 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 ๐Ÿ“Œ๋ฌธ์ œ `Reply`๋ฅผ ์‚ญ์ œ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•˜์—ฌ /URI/{rno}์— `DELETE` ๋ฐฉ์‹์œผ๋กœ ์‚ญ์ œ๋ฅผ ์š”์ฒญํ•จ. `Reply`์˜ ์•„์ด๋””์ธ `rno`๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์กด์žฌํ•˜๋Š” ์•„์ด๋””๋กœ ์„ค์ •ํ•  ๊ฒฝ์šฐ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—†๋Š” ๋ฒˆํ˜ธ๋กœ ์„ค์ •ํ•˜๊ณ  ์š”์ฒญํ•˜๋ฉด Exception ์—†์ด code 200์„ ๋ฐ˜ํ™˜ ๋ฐ›์•˜์Œ. ๊ธฐ๋Œ€ํ–ˆ๋˜ Exception : `EmptyResultDataAccessException` 500 ๊ฒฐ๊ณผ: 200 Hibernat..

Java/Spring 2024.03.14

[Spring] Mac M1 ์Šคํ”„๋ง๋ถ€ํŠธ ์‹คํ–‰ ์‹œ Port 8080 is already in use

ํ”„๋กœ์ ํŠธ๋ฅผ ์ด๊ฒƒ ์ €๊ฒƒ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ๊ป๋‹ค๊ฐ€ ์ผฐ๋Š”๋ฐ ํฌํŠธ๊ฐ€ ๋‹ซํ˜€์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฏธ 8080 ํฌํŠธ๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ๋ฐ ํ•ด๋‹น ํฌํŠธ๋กœ ์„œ๋ฒ„๋ฅผ ์˜ฌ๋ฆฌ๋ ค๊ณ  ์‹œ๋„ํ•ด์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋‹ค. ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ  ์‹คํ–‰ ์ค‘์ธ ํฌํŠธ๋ฅผ ๊ฒ€์ƒ‰ํ•œ๋‹ค. sudo lsof -PiTCP -sTCP:LISTEN 8080์„ ์ฃฝ์—ฌ๋ฒ„๋ฆฐ๋‹ค. PID๋กœ ํ•ด๋‹น ํฌํŠธ๋ฅผ ๋‹ซ์„ ์ˆ˜ ์žˆ๋‹ค. 88579 ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผ ์น˜์ง€ ๋ง๊ณ  PID ์ณ๋ผ kill -9 88579 ์ฃฝ์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. sudo lsof -PiTCP -sTCP:LISTEN

Java/Spring 2024.03.13

[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