class Person {
private String name;
private String getName() {
return this.name;
}
}
class Tutor extends Person {
private String address;
// Person 클래스를 상속했기 때문에,
// name 멤버변수와 getName() 메소드를 가지고 있습니다.
}
클래스 tutor에서 name하고 getname()을 바로 사용할 수 있다.
Annotation
이런 역할이 있어~ 라고 알려주는 것
abstract
직접구현 안된다! 상속으로만 된다!
// 데이터 저장하기
repository.save(new Course("프론트엔드의 꽃, 리액트", "임민영"));
// 데이터 전부 조회하기
List<Course> courseList = repository.findAll();
for (int i=0; i<courseList.size(); i++) {
Course course = courseList.get(i);
System.out.println(course.getId());
System.out.println(course.getTitle());
System.out.println(course.getTutor());
}
// 데이터 하나 조회하기
// ID를 통해서 찾을 것이기 때문에 findbyId(1L)
//아이디의값인데 Long인 아이디1개를 넣었기 때문에 1L을 넣어줌 또한 없을 경우에 어떻게 실행되는지 써줘야 한다.
Course course = repository.findById(1L).orElseThrow(
() -> new IllegalArgumentException("해당 아이디가 존재하지 않습니다.")
);
스프링의 구조는 3가지 영역으로 나눌 있다.
1. Controller : 가장 바깥 부분, 요청/응답을 처리함 (자동응답기)
→ 조금이따배울 애
2. Service : 중간 부분, 실제 중요한 작동이 많이 일어나는 부분
→ 지금 배울 녀석
3. Repo : 가장 안쪽 부분, DB와 맞닿아 있음. (SQL)
→ 여태 배운 녀석 (Repository, Entity)
courseRepository.deleteAll();
이렇게 설정을하고
Course 클래스에서 get id, title, tutor 부분을 모두 지웠다. 그렇게 하니까 메인 application에서 빨간줄이 났는데, course 클래스에서 쉽게 @getter을 작성하니까 오류가 살아진다. getter 코드를 작성하지 않았지만 lombok이 작성해줘서 가져가 쓸수있게 되었다.
기본 생성자를 만들어주지 않았지만, 밑에 롬복을 통해서 작성이 가능하다.
@NoArgsConstructor // 기본생성자를 대신 생성해줍니다.
> // 생성자를 통해, Service 클래스를 만들 때 꼭 Repository를 넣어주도록
// 스프링에게 알려줌
public CourseService(CourseRepository courseRepository) {
this.courseRepository = courseRepository;
}
이부분을 좀 줄여보고자한다!