-
[๊ฐ์] ์น๊ฐ๋ฐ์ ๋ด, 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์ผ ๊ฒฝ์ฐ ์ ๋ฉ์์ง๋ฅผ ๋์ฐ๊ฒ ๋๋ค.
- Controller : ๊ฐ์ฅ ๋ฐ๊นฅ ๋ถ๋ถ, ์์ฒญ/์๋ต์ ์ฒ๋ฆฌํจ.
- Service : ์ค๊ฐ ๋ถ๋ถ, ์ค์ ์ค์ํ ์๋์ด ๋ง์ด ์ผ์ด๋๋ ๋ถ๋ถ
- 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์ผ๋ก ๋ง๋๋ ๊ฒ์ด์๋ค~~
'SPRING > SPARTA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ฐ์] ์น๊ฐ๋ฐ์ ๋ด, Spring 4์ฃผ์ฐจ (0) 2021.10.17 [๊ฐ์] ์น๊ฐ๋ฐ์ ๋ด, Spring 3์ฃผ์ฐจ (0) 2021.08.20 [๊ฐ์] ์น๊ฐ๋ฐ ์ข ํฉ๋ฐ 5์ฃผ์ฐจ (0) 2021.08.08 [๊ฐ์] ์น๊ฐ๋ฐ ์ข ํฉ๋ฐ 4์ฃผ์ฐจ (0) 2021.08.06 [๊ฐ์] ์น๊ฐ๋ฐ ์ข ํฉ๋ฐ 3์ฃผ์ฐจ (2) 2021.08.05