[SpringBoot] ์Šคํ”„๋ง๋ถ€ํŠธ + JPA๋ฅผ ์ด์šฉํ•œ CRUD ๊ตฌํ˜„ 4. ๋ฆฌ์ŠคํŠธ ์ถœ๋ ฅํ•˜๊ธฐ

๐ŸŽ‹ JPA Auditing src/main/java/com/test/spring/boot_crud/domain/BaseTimeEntity.java package com.test.spring.boot_crud.domain; import lombok.Getter; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import javax.persistence.EntityListeners; import javax.persistence.MappedSuperclass; import java.time.LocalDateTime; @Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public class BaseTimeEntity { @CreatedDate private LocalDateTime createdDate; @LastModifiedDate private LocalDateTime modifiedDate; } Posts ํด๋ž˜์Šค๋„ ์ˆ˜์ •ํ•ด์ฃผ์ž. ... public class Posts extends BaseTimeEntity { ... JPA Auditing :... Continue reading...

[SpringBoot] ์Šคํ”„๋ง๋ถ€ํŠธ + JPA๋ฅผ ์ด์šฉํ•œ CRUD ๊ตฌํ˜„ 3. ๋“ฑ๋ก ๊ธฐ๋Šฅ ๋งŒ๋“ค๊ธฐ

๐ŸŽ‹ Controller src/main/java/com/test/spring/boot_crud/web/PostsApiController.java package com.test.spring.boot_crud.web; import com.test.spring.boot_crud.service.posts.PostsService; import com.test.spring.boot_crud.web.dto.PostsSaveRequestDto; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RequiredArgsConstructor @RestController public class PostsApiController { private final PostsService postsService; @PostMapping("/api/posts") public Long save(@RequestBody PostsSaveRequestDto requestDto) { return postsService.save(requestDto); } } @RequiredArgsConstructor : ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection) ํ™œ์šฉ์„ ์œ„ํ•ด ์‚ฌ์šฉ / final ํ•„๋“œ๋‚˜ @NotNull์ด... Continue reading...

[SpringBoot] ์Šคํ”„๋ง๋ถ€ํŠธ + JPA๋ฅผ ์ด์šฉํ•œ CRUD ๊ตฌํ˜„ 2. ์‹คํ–‰ํ•˜๊ธฐ

๐ŸŽ‹ Mustache ๋จธ์Šคํ…Œ์น˜(Mustache)๋ฅผ ์ด์šฉํ•ด ํ™”๋ฉด์„ ๋งŒ๋“ค์–ด๋ณด์ž. ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜ ํ›„ โžก๏ธ dependencies { ... implementation('org.springframework.boot:spring-boot-starter-mustache') ... } build.gradle > dependencies์— ์œ„์™€ ๊ฐ™์ด ์ถ”๊ฐ€ โžก๏ธ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— ๋œจ๋Š” ๐Ÿ˜๐Ÿ”„๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์ž. ๐ŸŽ‹ Index ํ™”๋ฉด ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•ด๋ณด๊ธฐ resources/templates/layout/header.mustache <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>์Šคํ”„๋ง๋ถ€ํŠธ ๊ฒŒ์‹œํŒ</title>... Continue reading...

[SpringBoot] ์Šคํ”„๋ง๋ถ€ํŠธ + JPA๋ฅผ ์ด์šฉํ•œ CRUD ๊ตฌํ˜„ 1. ์‹œ์ž‘ํ•˜๊ธฐ

๐ŸŽ‹ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ ๐Ÿค” Spring Initializr๋ฅผ ์ด์šฉํ•œ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ Dependencies์—๋Š” Spring Web Spring Data JPA Lombok MySQL Driver ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์ž. ๐ŸŽ‹ JPA๋ž€? Java Persistence API ์ž๋ฐ” ์ง„์˜์—์„œ ORM(Object-Relational Mapping) ๊ธฐ์ˆ  ํ‘œ์ค€์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ์Œ ORM : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐ์ฒด๋ฅผ RDB ํ…Œ์ด๋ธ”์— ๋งคํ•‘, ์ž๋™์œผ๋กœ ์˜์†ํ™” ํ•ด์ฃผ๋Š” ๊ฒƒ MyBatis,... Continue reading...

[์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด] ๋‹จ์–ด ๋’ค์ง‘์–ด์„œ ์ถœ๋ ฅํ•˜๊ธฐ / StringBuilder / toCharArray()

๐Ÿ”’ ์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด ๐Ÿ” ๋‹จ์–ด ๋’ค์ง‘์–ด์„œ ์ถœ๋ ฅํ•˜๊ธฐ n๊ฐœ์˜ ๋‹จ์–ด๋ฅผ ์ž…๋ ฅ๋ฐ›์€ ํ›„, ์ž…๋ ฅ ๋ฐ›์€ ๋‹จ์–ด๋“ค์„ ๋’ค์ง‘์–ด์„œ(์—ญ์œผ๋กœ) ์ถœ๋ ฅํ•ด๋ณด์ž. // ์ถœ๋ ฅ๊ฒฐ๊ณผ 3 hello java salut olleh avaj tulas ๐Ÿ”“ ๋ฌธ์ž ๋’ค์ง‘๊ธฐ ๋ณธ ๋ฌธ์ œ ํ’€๊ธฐ ์ „์— ๋ฌธ์ž์—ด ํ•œ ๊ฐœ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋’ค์ง‘์–ด์„œ ์ถœ๋ ฅํ•ด๋ณด๊ธฐ. import java.util.Scanner; public class Main { public static void main(String[] args){... Continue reading...