Entity 작성
@Embeddable
@Embedded
enum class
@Enumerated
@GeneratedValue
Entity 간의 관계 설정
양방향 단방향 작성은 선택의 문제!
course 와 lecture
mappedBy / @JoinColumn
Entity 로딩 설정
fetch = FetchType.LAZY/EAGER
관련이 있는 Entity를 실제 사용할 때 할지말지
영속성
cascade = [CasecadeType. ] // 부모 Entity 의 영속성을 전파할 때 @OnetoMany의 Annotation!!!
Course 가 영속성 관계에 들어왔을 때 course 와 관계있는 다른 것들은 어떻게 처리할 것인지?
Repository 작성
JPARepository 이용
종속성 ->트랜잭션할 때 설정했었다.
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
JPA Repository 에서 제공하는 메소드 확인
Spring API Docs
Repository 인터페이스 작성
interface CourseRepository: JpaRepository<Course, Long> {
} ^Entity타입 ^ID타입
Repository layer 와 ServiceImpl 연결
생성자에 Repository 주입
@Service
class CourseServiceImpl(val courseRepository: CourseRepository): CourseService
상세 구현을 하는데 반환을 위해 반복되는 부분은 Entity 클래스에 Extension 메소드로 만든다.
(<- DTO 로 변환하는 것은 Model 이 가지는 필수적인 비즈니스로직이 아니기 때문에 Extension )
확장함수 Extension method
// DTO 변환
fun Course.toResponse(): CourseResponse {
return CourseResponse(
id = id!!,
title = title,
description = description,
status = status.name,
maxApplicants = maxApplicants,
numApplicants = numApplicants
)
}
확장의 대상이 되는 클래스 + . + 함수명
lecture 추가할 경우
변경사항을 courseRepository 를 통해 영속성 전파하면 연관관계에 있는 lectureRepository도 영향!
************영속성
자식 Entity 가 부모 Entity 의 생명주기를 따라감
테스트하려고 값을 입력하면
server response로 500 에러가 뜬다..모든 값 전부 다ㅜㅜ
500이면 서버내부오류? 로 원인이 다양하고 코드 작성 잘못된 부분으로도 나올 수 있다고 한다
오늘 작성한 repository 단은 하나하나 비교해도 이상한 곳이 없었는데 어디가 문제일까 ...
챌린지 반 1주차
변경에 유연한 프로그램 만들기
1. 계산기 과제에서 추상 클래스 Operator 를 사용한 이유
2. Repository 를 의존하는 Service 들의 구조를 그림으로 그려보자. service -> repository
3. Repository가 추상화로 존재하는 이유
1. 객체지향 프로그래밍
변경에 유연해야 한다!!
2. 의존성
의존성이 유연한 변경을 방해한다
a에서 b를 호출한다 == a 가 b를 의존한다.
3. 캡슐화
oop 왜? 등장했나
타입계층 => 리스코프치환원칙
DI 생성자/setter/파라미터 주입 (필드: spring)
강의 - 오늘 과제 시작해보려했는데...내일부터 시작해도 할 수 있겠지..?ㅎㅎㅎㅎㅎㅎㅎ.....
챌린지 - 저녁먹고 듣는 강의가 제일 힘들다. 객체 지향의 설명과 예를 들으면 이해가 가는데 이걸 설계?하는게 어려운 것 같다.
내일 할 일
-코드타카 27
-swagger response 오류
-과제 시작!!!
객체지향 숙제, 부트캠프 참여까지 회고 글 ~12/30
'왕초보일지' 카테고리의 다른 글
231228 TIL | (0) | 2023.12.28 |
---|---|
231227 | Todo Step1 (0) | 2023.12.27 |
231222 TIL | (1) | 2023.12.22 |
231221 TIL | (2) | 2023.12.21 |
231220 TIL | Spring Service Layer 작성 (1) | 2023.12.20 |