스파르타 "웹개발의 봄, Spring" 둘째주
H2 database 설치 (2-3)
환경설정
- src>main>resources>application.properties
에 아래와 같이 입력
spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb
-
브라우저: localhost:8080/h2-console
-
console url: 1번 두번째 코드 url
jdbc:h2:mem:testdb
Spring 과 MySQL 비교 (2-4)
Spring | MySQL |
---|---|
Domain | Table |
Repository | SQL |
- Domain 패키지 내부의 Entity 는 table 과 동일시 하면 됨
JPA, interface (2-4)
- JPA는 Repository를 통해서만 사용할 수 있습니다.
- 인터페이스는 클래스에서 멤버가 빠진, 메소드 모음집이라고 보시면 됩니다.
JPA 사용시 SQL문 보이게 하는 설정 (2-5)
src>main>resources>application.properties 에다가 아래와 같이 입력 추가
spring.jpa.show-sql:true
TimeStamped class(JPA) (2-6)
- domain 패키지아래 TimeStamped class 생성
@Getter //
@MappedSuperclass // 상속했을 때, 컬럼으로 인식 -> table(=Entity) 의 칼럼요소로 인식
@EntityListeners(AuditingEntityListener.class) // 생성/수정 시간을 자동으로 반영하도로 설정
public abstract class TimeStamped {
@CreatedDate // 생성일자
private LocalDateTime creadtedAt;
@LastModifiedBy // 마지막 수정일자
private LocalDateTime modifiedAt;
}
-
Week02Application 에 @SpringBootApplication 과 함께 @EnableJpaAuditing 입력
-
Course 클래스 TimeStamped 상속 받음 -> DB 에 자동으로 CREATED_AT, MODIFIED_AT coulumn 생성
CRUD - JPA 메소드 (2-6)
내용 | JPA | 메소드 위치 |
---|---|---|
Create | repository.save(object) | repository 객체 |
Read | repsotory.findById(id) repository.findAll() | repository 객체 |
Update | service.update(id, object) | entity에 생성, 서비스에서 이용 |
Delete | repository.deleteById(id) repository.deleteAll() | repository 객체 |
Service: update, delete (2-6)
스프링의 3영역
영역 | 내용 |
---|---|
Controller | 가장 바깥쪽 부분, 요청/응답을 처리함, 자동응답기? |
Service | 중간 부분, 실제 중요한 동작이 많이 일어나는 부분 |
Repository | 가장 안쪽 부분, DB와 맞닿아 있음 |
udpdate() 메소드는 Entity(Course.class) 내부에 작성
사용중인 Lombok annotation (2-7)
@Getter: getter 만들기
@NoArgsConstructor: 기본생성자 만들기
예) pubic ClassName() {}
@RequiredArgsConstructor: service 에서 생성자(constructor)를 통해 final 변수(repository)를 초기화한다.
DTO (Database Transfer Object) (2-8)
데이터를 update 할 때는 직접 Entity 접근하지 않고,
DTO 라는 매개객체를 이용하여 update 한다.
- DTO 에 필요한 Lombok annotation
- @Getter: 당연히 필요
- @Setter: data 를 수정해야 하기 때문에 필요
- @RequiredArgsConstructor
package com.sparta.week02.domain;
import lombok.Getter;
@Getter
public class CourseRequestDto {
private final String title;
private final String tutor;
}
REST (2-9)
👉 REST란, 주소에 명사, 요청 방식에 동사를 사용함으로써 의도를 명확히 드러냄을 의미합니다.
- 여기에 쓰이는 동사는 우리가 JPA 시간에 배운 CRUD를 지칭합니다.
- 즉 A에 대해 생성(POST)/조회(GET)/수정(PUT)/삭제(DELETE) 요청을 하는 것이죠.
- 주의사항
- 주소에 들어가는 명사들은 복수형을 사용합니다.
- /course
- 주소에 동사는 가급적 사용하지 않습니다.
- /accounts/edit
Author And Source
이 문제에 관하여(스파르타 "웹개발의 봄, Spring" 둘째주), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yoonjs1229/스파르타-웹개발의-봄-Spring-둘째주저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)