ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๊ฐ•์˜] ์›น๊ฐœ๋ฐœ์˜ ๋ด„, Spring 1~2์ฃผ์ฐจ
    SPRING/SPARTA 2021. 8. 14. 18:19

    java๋ž‘ ์›น ๊ธฐ์ดˆ๋Š” ๋Œ€์ถฉ ์•„๋Š” ํŽธ์ด๊ธฐ์— ๋„˜์–ด๊ฐ€๋ฉด์„œ ๋ณต์Šต ์ฐจ์›์œผ๋กœ ๋“ค์—ˆ๋‹ค.

    spring ๋ณต์Šตํ•˜๋ฉด์„œ ๊ธฐ์ดˆ์ข€ ์ œ๋ฐœ... ์•Œ์•„๊ฐ€๋ ค๋Š” ๊ธฐ๋ถ„์œผ๋กœ ๋“ค์„ ์˜ˆ์ •์ด๋‹ค

     

     

     

    H2

    CREATE TABLE IF NOT EXISTS courses (
        id bigint(5) NOT NULL AUTO_INCREMENT, 
        title varchar(255) NOT NULL,
        tutor varchar(255) NOT NULL,
        PRIMARY KEY (id)
    );

    AUTO_INCREAMENT : ์ž๋™ ์ฆ๊ฐ€

    NOT NULL : NULL์•ˆ๋จ

     

    JPA

    JPA๋Š” JAVA๋ฅผ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก MySQL๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•œ๋‹ค.

    ์›๋ž˜๊ฐ™์œผ๋ฉด ์ž๋ฐ” SQL ๋ฒˆ๊ฐˆ์•„ ํ•ด์•ผํ–ˆ์„ ๊ฒƒ

    CRUD๋ฅผ ์‹คํ˜„์‹œ์ผœ์ค€๋‹ค.

     

    Repository : SQL๋‹ด๋‹น. interface๋กœ ์„ ์–ธ

    Domain : Table ๋‹ด๋‹น (@Entity : ํ…Œ์ด๋ธ” ์„ ์–ธ, @ID id๋กœ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค.)

     

    public interface CourseRepository extends JpaRepository<Course, Long> {
    }

    ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค๋ฉด JPA๋ฅผ ์‚ฌ์šฉํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ๋œ๋‹ค.

     

    DB์˜ ๊ธฐ๋ณธ์€ ์ƒ์„ฑ์ผ์ž์™€ ์ˆ˜์ •์ผ์ž๋ฅผ ํ•„๋“œ๋กœ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด๋‹ค.

    //Timestamped.java
    
    @MappedSuperclass // ์ƒ์†ํ–ˆ์„ ๋•Œ, ์ปฌ๋Ÿผ์œผ๋กœ ์ธ์‹ํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
    @EntityListeners(AuditingEntityListener.class) // ์ƒ์„ฑ/์ˆ˜์ • ์‹œ๊ฐ„์„ ์ž๋™์œผ๋กœ ๋ฐ˜์˜ํ•˜๋„๋ก ์„ค์ •
    abstract class Timestamped {
    
    @CreatedDate // ์ƒ์„ฑ์ผ์ž์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
    private LocalDateTime createdAt;
    
    @LastModifiedDate // ๋งˆ์ง€๋ง‰ ์ˆ˜์ •์ผ์ž์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
    private LocalDateTime modifiedAt;
    }

    optional๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋‚  ๋•Œ,

    .findById(1L).orElseThrow( () -> new IllegalArgumentException("ํ•ด๋‹น ์•„์ด๋””๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.") )

    ID๊ฐ€ null์ผ ๊ฒฝ์šฐ ์ € ๋ฉ”์‹œ์ง€๋ฅผ ๋„์šฐ๊ฒŒ ๋œ๋‹ค.

     

    1. Controller : ๊ฐ€์žฅ ๋ฐ”๊นฅ ๋ถ€๋ถ„, ์š”์ฒญ/์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•จ.
    2. Service : ์ค‘๊ฐ„ ๋ถ€๋ถ„, ์‹ค์ œ ์ค‘์š”ํ•œ ์ž‘๋™์ด ๋งŽ์ด ์ผ์–ด๋‚˜๋Š” ๋ถ€๋ถ„
    3. Repo : ๊ฐ€์žฅ ์•ˆ์ชฝ ๋ถ€๋ถ„, DB์™€ ๋งž๋‹ฟ์•„ ์žˆ์Œ.

    ๋ญ”๊ฐ€ ๊ณ„์† ์ž‘๋™์ด ์ผ์–ด๋‚˜๋ฉด Service

     

    ๋ฉ”์†Œ๋“œ

     

    GET

    ์กฐํšŒ

    REST๋ž€, ์ฃผ์†Œ์— ๋ช…์‚ฌ, ์š”์ฒญ ๋ฐฉ์‹์— ๋™์‚ฌ๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์˜๋„๋ฅผ ๋ช…ํ™•ํžˆ ๋“œ๋Ÿฌ๋ƒ„์„ ์˜๋ฏธ

    ๊ทœ์น™ : GET์˜ ์ฃผ์†Œ์— ๋“ค์–ด๊ฐ€๋Š” ๋ช…์‚ฌ๋“ค์€ ๋ณต์ˆ˜ํ˜•, ๋™์‚ฌ๋Š” x

    POST

    ์ž˜ ์•ˆ๋˜์„œ ์˜ค๋ฅ˜๋ฅผ ๋ณด๋‹ˆ๊นŒ Cannot construct instance of `com.sparta.week02.domain.CourseRequestDto` (no Creators, like default constructor, exist) ์ด๋Ÿฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค.

    ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํ…… ๋นˆ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์—†๋‹ค๋Š” ์ด์•ผ๊ธฐ ๊ฐ™์•„ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ

    ๊ฐ•์‚ฌ๋‹˜ ๋”ฐ๋ผ ์นœ ๋ฒ„์ „์€ 

    @Setter
    @Getter
    @RequiredArgsConstructor
    public class CourseRequestDto {
    
        private final String title;
        private final String tutor;
    
    }

    ์ด ์ฝ”๋“œ๋ผ ๋นˆ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์—ˆ๋‹ค!

    ๊ทธ๋ž˜์„œ ์ž˜๋ชป์ณค๋‚˜? ํ•˜๊ณ  ํ™•์ธํ•ด ๋ณด๋‹ˆ ๊ฐ•์˜๋ก์—๋Š” 

    @Setter
    @Getter
    @NoArgsConstructor
    @AllArgsConstructor
    public class CourseRequestDto {
    
        private String title;
        private String tutor;
    
    }

    ์ด ๋ฒ„์ „์ด๊ณ  ์œ„์˜ ์ฝ”๋“œ๋Š” ๊ฐ•์‚ฌ๋‹˜ ๋ฒ„์ „์ด ๋งž๋”๋ผ!! ๋‚ด๊ฐ€ ๋ญ”๊ฐ€ ๊ณ ์น˜์‹œ๋Š” ๊ฑธ ๋†“์นœ๊ฑด๊ฐ€ ํ•˜์—ฌํŠผ ์งˆ๋ฌธ์„ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

    F&Q์— ์—†๋Š” ๊ฑธ ๋ณด๋‹ˆ ๋‚ด๊ฐ€ ๋†“์นœ๋“ฏ ์‹ถ์€๋ฐ... ํ˜น์€ ๋‹ค๋ฅธ ๊ณณ์„ ํ‹€๋ ธ๊ฑฐ๋‚˜

    ํ•˜์—ฌํŠผ ๊ณ ์น˜๊ณ  ๋‚˜๋‹ˆ ์ž˜ ๋์Œ

    PUT

     

    DELETE

    ๊ณผ์ œ๋Š” ์ด๊ฑฐ๋ž‘ ๋˜‘๊ฐ™์ด Person์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค~~

Designed by Tistory.