41日TIL
7226 ワード
JPA / DB
継承
クラスの継承は、作成したコードを書き込みとして宣言することです.
DBの基礎は、データがいつ生成され、いつ変更されたかを知ることです.
したがって、日付の作成および/変更が必要です.
作成
< @ (Annotation) 표시는 스프링에게 이런 역할이 있다고 말해주는 것>
<LocalDateTime: 시간을 나타내주는 자바의 자료형>
@MappedSuperclass // 상속했을 때, 컬럼으로 인식하게 합니다.
@EntityListeners(AuditingEntityListener.class) // 생성/수정 시간을 자동으로 반영하도록 설정
<abstract 무조건 상속으로만 사용가능 직접구현 x>
public abstract class Timestamped {
@CreatedDate // 생성일자임을 나타냅니다.
private LocalDateTime createdAt;
@LastModifiedDate // 마지막 수정일자임을 나타냅니다.
private LocalDateTime modifiedAt;
}
継承(extends Timestamped)
反映(@EnableJpaAuditing)
CRUD:情報管理の基本機能
作成
< @ (Annotation) 표시는 스프링에게 이런 역할이 있다고 말해주는 것>
<LocalDateTime: 시간을 나타내주는 자바의 자료형>
@MappedSuperclass // 상속했을 때, 컬럼으로 인식하게 합니다.
@EntityListeners(AuditingEntityListener.class) // 생성/수정 시간을 자동으로 반영하도록 설정
<abstract 무조건 상속으로만 사용가능 직접구현 x>
public abstract class Timestamped {
@CreatedDate // 생성일자임을 나타냅니다.
private LocalDateTime createdAt;
@LastModifiedDate // 마지막 수정일자임을 나타냅니다.
private LocalDateTime modifiedAt;
}
// 데이터 저장하기
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를 찾는데 long으로 찾음 .orElseThrow() = 오류가 발생하면 ()를해라 >
Course course = repository.findById(1L).orElseThrow(
() -> new NullPointerException("해당 아이디가 존재하지 않습니다.")
);
<들어오면 업데이트 해줘라>
public void update(Course course) {
this.title = course.title;
this.tutor = course.tutor;
}
/////
@Service <스프링에게 이 클래스는 서비스임을 명시>
public class CourseService {
<final 은 서비스에게 꼭 필요한 녀석임을 명시>
private final CourseRepository courseRepository;
<생성자를 통해, Service 클래스를 만들 때 꼭 Repository를 넣어주도록
스프링에게 알려줌>
public CourseService(CourseRepository courseRepository) {
this.courseRepository = courseRepository;
}
@Transactional <SQL 쿼리가 일어나야 함을 스프링에게 알려줌>
public Long update(Long id, Course course) {
Course course1 = courseRepository.findById(id).orElseThrow(
() -> new IllegalArgumentException("해당 아이디가 존재하지 않습니다.")
);
course1.update(course);
return course1.getId();
}
}
@Bean
public CommandLineRunner demo(CourseRepository courseRepository, CourseService courseService) {
return (args) -> {
courseRepository.save(new Course("봄봄봄", "김성훈"));
System.out.println("데이터 인쇄");
List<Course> courseList = courseRepository.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());
}
Course new_course = new Course("가을가을가을", "김춘식");
courseService.update(1L, new_course);
courseList = courseRepository.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());
}
courseRepository.deleteAll(); //삭제
};
}
『春春春春、金成勲が入って秋秋秋に金春植に更新』<맨 밑에 추가>
courseRepository.deleteAll(); 추가
Reference
この問題について(41日TIL), 我々は、より多くの情報をここで見つけました https://velog.io/@shkim1199/35TILテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol