티스토리 뷰

반응형
package kr.co.fastcampus.eatgo.domain;

import lombok.*;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

@Entity
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Reservation {

    @Id
    @GeneratedValue
    private Long id;

    private Long restaurantId;

    private Long userId;

    @Setter
    private String name;

    @Setter
    @NotEmpty
    private String date;

    @Setter
    @NotEmpty
    private String time;

    @Setter
    @NotNull
    private Integer partySize;
}

Spring Initializr

spring initializr를 이용해 간편하게 프로젝트를 생성할 수 있다.

 

1. 다음 사이트에 접속한다.

https://start.spring.io/

2. 옵션 설정 후 GENERATE를 눌러서 다운로드 해준다.

압축 해제 후  IntelliJ로 실행시킨다.

 

Test Driven Development

테스트 주도 개발= 목표 주도 개발= 사용자 중심 개발= 인터페이스 중심 개발

-> TDD를 하는 이유 : 목표를 달성하기 위해 올바르게 작동하는 깔끔한 코드를 만드는 것

 

1. 올바르게 작동하는 코드를 만든다.

2. 깔끔한 코드로 Refactoring한다.

 

 

TDD cycle

Red : 실패한 Test     ex) 1 + 1을 계산해주는 method가 없음

Green : 부분 성공한 Test     ex) 1 + 1 = 2 를 계산해주는 method를 만들어줬지만, 1 + 3은 계산하지 못함

Refactoring : 깔끔한 Code로 바꿔주는 과정    ex) x + y = x와 y를 더한 값을 계산해주는 method를 만들어줌

 

package kr.co.fastcampus.eatgo.domain;

import org.springframework.data.repository.CrudRepository;

import java.util.List;

public interface ReservationRepository
        extends CrudRepository<Reservation, Long> {

    List<Reservation> findAllByRestaurantId(Long restaurantId);

    Reservation save(Reservation reservation);
}

 

package kr.co.fastcampus.eatgo.application;

import kr.co.fastcampus.eatgo.domain.Reservation;
import kr.co.fastcampus.eatgo.domain.ReservationRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;
import java.util.List;

@Service
@Transactional
public class ReservationService {

    private ReservationRepository reservationRepository;

    @Autowired
    public ReservationService(ReservationRepository reservationRepository) {
        this.reservationRepository = reservationRepository;
    }

    public List<Reservation> getReservations(Long restaurantId) {
        return reservationRepository.findAllByRestaurantId(restaurantId);
    }

}

 

 

 

 

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함