41日TIL


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:情報管理の基本機能


作成
  • クエリー
  • // 데이터 저장하기
                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("해당 아이디가 존재하지 않습니다.")
                );
    
    
  • 変更(更新)
  • (コントローラ、サービス、およびRepo)スプリングの3つの構成部分に属する
    <들어오면 업데이트 해줘라>
    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(); 추가