์ „์ฒด ๊ธ€ 77

[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

๋งฅ์—์„œ MySQL, MariaDB๋กœ ์ „ํ™˜ ์‹œ ์˜ค๋ฅ˜

Mysql ์“ฐ๋‹ค๊ฐ€ MariaDB ์“ฐ๋ ค๋Š”๋ฐ ํ„ฐ๋ฏธ๋„์—์„œ mysql์ด none์ž„์—๋„ mariadb์— ์ ‘์†๋˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ mariadb ํฌํŠธ 3307 mysql ํฌํŠธ 3306 ์ด๋‹ค. ์ด ์ƒˆ๋ผ๊ฐ€ ์‚ด์•„์žˆ์–ด์„œ ๊ทธ๋ ‡๋‹ค ๊บผ์ค€๋‹ค

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€?

๐Ÿ“Œ์•Œ๊ณ ๋ฆฌ์ฆ˜์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ์ ˆ์ฐจ์™€ ๊ณผ์ •์„ ์ผ์ปซ๋Š”๋‹ค. ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ๋”ฐ๋ผ์•ผ ํ•  ๋ช…๋ น์–ด๋“ค์„ ๋‹จ๊ณ„์ ์œผ๋กœ ๋‚˜์—ดํ•œ ๊ฒƒ์„ ๋œปํ•œ๋‹ค. ๐Ÿ“Œ์กฐ๊ฑด1. ์ž…์ถœ๋ ฅ: 0๊ฐœ ์ด์ƒ์˜ ์™ธ๋ถ€ ์ž…๋ ฅ๊ณผ 1๊ฐœ ์ด์ƒ์˜ ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•œ๋‹ค.2. ๋ช…ํ™•์„ฑ: ๊ฐ ๋ช…๋ น์€ ๋ชจํ˜ธํ•˜์ง€ ์•Š๊ณ  ๋ช…ํ™•ํ•ด์•ผํ•œ๋‹ค.3. ์œ ํ•œ์„ฑ: ํ•œ์ •๋œ ์ˆ˜์˜ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นœ ํ›„์—๋Š” ๋ฐ˜๋“œ์‹œ ์ข…๋ฃŒํ•ด์•ผํ•œ๋‹ค.4. ์œ ํšจ์„ฑ: ๋ชจ๋“  ๋ช…๋ น์€ ์ปดํ“จํ„ฐ์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.5. ํšจ์œจ์„ฑ: ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํšจ์œจ์ ์ด์–ด์•ผ ํ•œ๋‹ค.(์‹ค์šฉ์  ๊ด€์ ) ์ฃผ์–ด์ง„ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ชจํ˜ธํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ˆœ ๋ช…ํ™•ํ•˜๋ฉฐ ์ปดํ“จํ„ฐ๊ฐ€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํ•œ ๊ฐœ์˜ ์ผ๋ จ์˜ ๋ช…๋ น์–ด๋“ค์„ ์ˆœ์„œ์— ๋”ฐ๋ผ ๊ตฌ์„ฑํ•œ ๊ฒƒ์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ ํ•œ๋‹ค.  ๐Ÿ“Œ์„ค๊ณ„์ฃผ์–ด์ง„ ๋ฌธ์ œ์™€ ์กฐ๊ฑด์€ ๋งค์šฐ ๋‹ค์–‘..

[Spring] Could not find modelmapper ์˜ค๋ฅ˜

๐Ÿ“Œํ™˜๊ฒฝ Spring Boot 3.2.3 Gradle - Groovy JPA Java 17 ๐Ÿ“Œ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ Could not find org.modelmapper.modelmapper:3.1.0: Required by: project : ๐Ÿ“Œํ•ด๊ฒฐ ์ฐธ๊ณ ํ•œ ์ฑ…(์ž๋ฐ” ์›น ๊ฐœ๋ฐœ ์›Œํฌ๋ถ)์—์„œ๋Š” ์˜์กด์„ฑ ์ถ”๊ฐ€ ์‹œ `build.gradle`์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ผ๊ณ  ์จ์žˆ๋‹ค. dependencies { implementation 'org.modelmapper:modelmapper:3.1.0' } ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. dependencies { implementation group: 'org.modelmapper', name: 'modelmapper', version: '3.1.1' }

[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

[MariaDB] mac M1์—์„œ ์ ‘์†ํ•˜๊ธฐ, ํฌํŠธ ๋ฒˆํ˜ธ ๋ณ€๊ฒฝํ•˜๊ธฐ, MySQL workbench๋กœ ์ ‘์†ํ•˜๊ธฐ

์ผ๋‹จ brew๋กœ mariadb๋ฅผ ์„ค์น˜ํ•œ๋‹ค. mysql์ด ์ผœ์ ธ์žˆ์œผ๋ฉด mariadb๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๋“ฏ. ์•„์˜ˆ ์„ค์ •์—์„œ mysql์„ ์ข…๋ฃŒํ•ด์ฃผ๊ณ  ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. brew services start mariadb@10.11 mariadb ์‹คํ–‰. 10.11์€ ๋ฒ„์ „๋ช…์ด๋‹ค. brew services list ์‹คํ–‰ ์ค‘์ธ db ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. Name Status User File h2 none mariadb@10.11 started ์œ ์ €์ด๋ฆ„ ~/Library/LaunchAgents/homebrew.mxcl.mariadb@10.11.plist mysql none status๊ฐ€ started๋กœ ๋˜์–ด ์žˆ์œผ๋ฉด ์‹คํ–‰์— ์„ฑ๊ณตํ•œ ๊ฒƒ ๐Ÿ“Œ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ERROR 2002 (HY000): Can't connect to loca..

[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

[MySQL] ์‚ญ์ œ ์•ˆ๋จ Error Code: 1175. You are using safe update mode...

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. safe mode๊ฐ€ ์ผœ์ ธ ์žˆ์–ด์„œ update ๊ตฌ๋ฌธ์ด ํ†ตํ•˜์ง€ ์•Š์„ ๋•Œ. set SQL_SAFE_UPDATES = 0; -- safe mode disable ๊ตฌ๋ฌธ์„ ์ž‘์„ฑํ•˜๊ณ  ๋‚œ ๋’ค์—” ์•ˆ์ „์„ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ๋‹ค์‹œ ์ผœ์ฃผ๋„๋ก ํ•˜์ž. set SQL_SAFE_UPDATES = 1; -- safe mode enable

[JavaScript] ์•„์ด๋”” ์ค‘๋ณต ํ™•์ธ, ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ

ID ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ธ ์•„์ด๋””์ž…๋‹ˆ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. //์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธํ•˜์ง€ ์•Š์œผ๋ฉด join ๋ฒ„ํŠผ ๋น„ํ™œ์„ฑํ™” var idCheck = false; var passwordCheck = false; //์•„์ด๋”” ์ค‘๋ณต ์ฒดํฌ function checkId(){ var inputId = $('#id').val(); $.ajax({ data : { inputId : inputId }, url : './checkId', type : 'post', success : function(data){ if(data === '1'){//์•„์ด๋””๊ฐ€ ์ค‘๋ณต๋˜์—ˆ๋‹ค๋ฉด $('#id').css("background-color", "lightpink"); $('#id-alert')..

JavaScript 2024.01.25

[๋””์ž์ธ ํŒจํ„ด] ์ƒํƒœ(State) ํŒจํ„ด

์ƒํƒœ ํŒจํ„ด์ด๋ž€ ํ–‰์œ„ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋กœ, ๊ฐ์ฒด๊ฐ€ ํŠน์ • ์ƒํƒœ์— ๋”ฐ๋ผ ๋™์ž‘์„ ๋‹ค๋ฅด๊ฒŒ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ๋ถ„๊ธฐํ•˜๋Š” ๋Œ€์‹  ์ƒํƒœ ์ž์ฒด๋ฅผ ๊ฐ์ฒดํ™”ํ•˜์—ฌ ํ–‰๋™ ๊ฒฐ์ •์„ ์œ„์ž„ํ•˜๋Š” ํŒจํ„ด์„ ๋งํ•œ๋‹ค. ์ƒํƒœ๋ž€ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์–ด๋–ค ์กฐ๊ฑด์ด๋‚˜ ์ƒํ™ฉ์„ ๋งํ•œ๋‹ค. ์ฃผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค. 1. ๊ฐ์ฒด์˜ ํ–‰๋™์ด ์ƒํƒœ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ๋•Œ 2. ๊ฐ์ฒด์˜ ์ฝ”๋“œ๊ฐ€ ์ƒํƒœ ์ „ํ™˜์— ๋”ฐ๋ฅธ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ๋ณต์žกํ•ด์งˆ ๋•Œ ์ƒํƒœ ํด๋ž˜์Šค๋Š” ์ƒํƒœ์— ๋”ฐ๋ผ ํ–‰๋™์„ ๊ตฌํ˜„ํ•˜๊ณ , ๊ฐ์ฒด๋Š” ๊ทธ ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๋ฉฐ ์ƒํƒœ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ํ–‰๋™์„ ์ทจํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์žํŒ๊ธฐ๋Š” ๋ˆ์ด ์ถฉ๋ถ„ํžˆ ๋“ค์–ด์˜ค์ง€ ์•Š์œผ๋ฉด ๋ฒ„ํŠผ์ด ํ™œ์„ฑํ™”๋˜์ง€ ์•Š๋Š”๋‹ค. ์žํŒ๊ธฐ๋Š” ๋ˆ์ด ๋“ค์–ด์˜จ ์ƒํƒœ์™€, ๋ˆ์ด ๋“ค์–ด์˜ค์ง€ ์•Š์€ ์ƒํƒœ์— ๋”ฐ๋ผ ํ–‰์œ„๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. // ์ƒํƒœ ์ธํ„ฐํŽ˜์ด์Šค interface VendingMachineState..

[๋””์ž์ธ ํŒจํ„ด] ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ(Decorator) ํŒจํ„ด

๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์€ ๊ตฌ์กฐ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋กœ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํŒจํ„ด์ด๋‹ค. // Component ์ธํ„ฐํŽ˜์ด์Šค interface Component { String operation(); } // RealComponent ํด๋ž˜์Šค class RealComponent implements Component { @Override public String operation() { return "String"; } } // Decorator ์ธํ„ฐํŽ˜์ด์Šค interface Decorator extends Component { } // RealDecorator ํด๋ž˜์Šค class RealDecorator implements Decorator { private Component component; public R..

[๋””์ž์ธ ํŒจํ„ด] ํ”„๋ก์‹œ(Proxy) ํŒจํ„ด

ํ”„๋ก์‹œ(Proxy)๋Š” ์˜์–ด๋กœ ๋Œ€๋ฆฌ์ž๋ฅผ ๋œปํ•œ๋‹ค. ํ”„๋ก์‹œ ํŒจํ„ด์€ ๊ตฌ์กฐ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์–ด๋–ค ๋Œ€๋ฆฌ์ž ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๊ฐ„์ ‘์ ์œผ๋กœ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๋Š” ํŒจํ„ด์„ ๋งํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ํด๋ผ์ด์–ธํŠธ๋Š” ์˜๋ขฐ์ธ์„ ์˜๋ฏธํ•˜๋ฉฐ ์„œ๋ฒ„๋Š” ์„œ๋น„์Šค๋‚˜ ์ƒํ’ˆ์„ ์ œ๊ณตํ•˜๋Š” ์‚ฌ๋žŒ ๋˜๋Š” ๋ฌผ๊ฑด์„ ๋œปํ•œ๋‹ค. ์ฆ‰ ์›น์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘์†ํ•œ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋˜๊ณ , ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. 1. ๊ฐ€์ƒ ํ”„๋ก์‹œ(Virtual Proxy) - ์‹ค์ œ ๊ฐ์ฒด์˜ ํฌ๊ธฐ๊ฐ€ ๊ฑฐ๋Œ€ํ•ด์„œ ์ƒ์„ฑ๊ณผ ์ ‘๊ทผ์— ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๊ฒฝ์šฐ ํ•„์š”ํ•œ ์‹œ์ ์—๋งŒ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ์ง€์—ฐ๋œ ์ดˆ๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ๋ณดํ˜ธ ํ”„๋ก์‹œ(Protection Proxy) - ์‹ค์ œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ํ†ต์ œํ•˜์—ฌ ํŠน์ • ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž(ํด๋ผ์ด์–ธํŠธ)๋งŒ์ด ์ ‘๊ทผํ•˜๋„..

[๋””์ž์ธ ํŒจํ„ด] ์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด

์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ ์ƒ์„ฑ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋กœ, ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ํŠน์ • ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‹จ ํ•˜๋‚˜์ž„์„ ๋ณด์žฅํ•˜๋Š” ํŒจํ„ด์ด๋‹ค. ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๋‹จ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ๊ณต์œ ํ•œ๋‹ค. public class Singleton { private static Singleton instance; // Private constructor to prevent direct instantiation private Singleton() { // Initialization if needed } // Static method to provide access to the instance public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return..