Q. 5일차 수강생의 심정은 어떤가요?
A. 본격적인 학원 수업을 듣게 된 지 약 5일차지만,
그동안 강의를 배우고 이해한 경험이 있었기에 이렇게 이해가 빠르게 된 것 같다. 물론, 내가 이걸 완전히 이해했어요! 까지는 아니다. (나는 아직도 계속 배워야 Java라는 것을 이해할 수 있을 것 같다)
지금은 데이터베이스 서버를 연결하는 방법을 익히는 중이다.
어제 개설한 서버와 연결하고, 아래 내용을 application.yml라는 파일에 새로 기록한다.

그리고 이렇게 작성된 .yml 파일을 실행했다. 무사히 연결이 확인되었다.

이후 이어지는 것은...?
내용의 작업, 데이터베이스의 틀을 만들었으니, 이제는 데이터가 들어갈 공간을 만들면 된다.
데이터 테이블의 세팅을 위해, @Entity를 작성한다.
@Getter와 @Setter가 들어가는 이유는, 데이터의 출입이 있어야 하기 때문이다.

이렇게 작업이 들어갔으며, 데이터 각각의 공간을 위해, entity라는 폴더를 만들고, 고객의 정보를 저장할 Java 클래스를 만들었다.

이 상태에서, Id라는 영역에서 persistence라는 요소가 있다. 이것은 영속적인(영구적인) 요소로, 이와 관련된 사항이 있다면 데이터베이스와 관련된 것이다.

이렇게 작성을 했고, 데이터의 접근을 막기 위해 private를 작성한다.(이것은 Long 타입의 id값을 가진다)
Long을 사용한 이유는?
그것은 자료형의 표현 가능 범위에 있다.

long의 표현 가능 범위가 int에 비해 넓기 때문에 사용하며,
model과 타 Java 클래스의 구분을 위해 Wrapper 클래스를 적용하였다.

@GeneratedValue()라는 작업을 진행할 때 나타난 팝업인데, 이것을 작성할 땐 타입이 앞에 사용되어야 한다고 한다.

그러니 이렇게 작성한다. GenerationType.INDENTITY인 이유는, ID의 값이 고유해야하기 때문이다.
@Column의 값은 null값이면 안 되기 때문에, nullable의 값을 false, length의 값을 20으로 지정해준다.
여기서 잠깐, 숫자는 length를 가질까?
답. 이미 값 자체가 지정되어있기 때문에 가지지 않는다.
자, 이제 @Entity의 값이 완성되었다. 실행 후 확인한 결과,

이렇게 Column의 값이 배치되었다.
인터페이스 구성
본격적인 구성에 앞서, 인터페이스를 구축하자.
이제 값이 완성되었다. 이제 각 Column의 안에 값을 연결하여 넣어주는 요소가 필요해졌다.
그렇기 위해선, Repository를 구성해야 한다.

이렇게 Repository를 구성한 뒤, 안에 고객의 정보를 넣어 줄 인터페이스를 구성한다.

이렇게 구성이 완료되었다.

그리고 <>안의 값은 테이블의 이름, 그리고 데이터의 타입이 필요하다. <>안에 Customer,Long을 작성한다.
답:
JpaRepository< ( 접근할 데이터 테이블(entity)의 이름), entity의 값이 가진 타입>이다.
인터페이스가 완성됐다.
기능의 구현은 ''서비스''가 한다. 서비스를 구성하자.

위의 레포지토리 인터페이스와 같이 동작해야하기 때문에, @RequiredArgsConstructor를 적용한다.
접근하면 안 되는 값을 지정하고, 이후 public에서 만들어야 하는 서비스를 구성한다.
내가 벌인 실수 : 서비스의 set...값이 들어가는 곳은?
public이다. 그래야 컨트롤러에서 접근한다.
자꾸 private로 적어서 접근이 안 되어 컨트롤러에서 막혔다, 주의하자.
@Service
@RequiredArgsConstructor
public class CustomerService {
private final CustomerRepository customerRepository;
//컨트롤러에서 접근하지 못하게끔 하기 위해, private를 적용한다.
public void setCustomer(String name , String phone) {
//return값이 없기에 void를 적용하고,
//setCustomer에서 필요로 하는 값인, 이름과 번호를 받아온다.
Customer addData = new Customer();
//새로운 addData값을 적용하고.
addData.setName(name);
addData.setPhone(phone);
//addData값에 각각의 값을 추가(set)한다.
customerRepository.save(addData);
//그리고 그것을 repository에 addData 값에 저장한다.
}
}

::참고:: 이름을 적용할 때의 암묵적인 규칙이라고 한다.
이제, 끝일까?
아니다, 더 있다.
서비스의 구성이 완료되었으니, 이제 이 서비스에 접근할 컨트롤러와, 정보값을 받을 공간인 모델이 필요하다.

컨트롤러를 이렇게 작성하고,

모델을 작성하여 값을 받아올 공간을 만든다.

Postman을 이용하여 값을 보내준 뒤,

실행된 것을 확인할 수 있다.