728x90
- extends
클래스의 상속
이미 만들어둔 것을 가져다가 쓰는 것
- 상속 연습-Timestamped
DB의 기본 중 기본은 데이터의 생성일자와 수정일자를 파악하는 것임
생성일자와 수정일자를 필드로 가지면 파악할 수 있음
Timestamped 클래스를 미리 만들어두면 다른 클래스를 만들 때 상속해서 사용하면
굳이 일일이 매번 클래스 멤버변수에 생성일자, 수정일자를 쓸 필요가 없음 : 번거로움이 줄음
/*Timestamped.java*/
@MappedSuperclass // 상속했을 때, 멤버변수를 컬럼으로 인식하게 합니다.
//@EntityListeners: 테이블 같은걸 주시하는것
@EntityListeners(AuditingEntityListener.class) //AuditingEntityListener: 생성/수정 시간을 자동으로 반영하도록 설정
//abstract: 추상. 직접 구현할 수 없다. 상속으로만 쓸 수 있다
public abstract class Timestamped {
@CreatedDate // 생성일자임을 나타냅니다.
private LocalDateTime createdAt;
@LastModifiedDate // 마지막 수정일자임을 나타냅니다.
private LocalDateTime modifiedAt;
}
public class Course extends Timestamped{ /*기존 코드에 'extends Timestamped'를 추가만 함*/
/*Course.java*/
@NoArgsConstructor // 기본생성자를 대신 생성해줍니다.
@Entity // 테이블임을 나타냅니다.
public class Course extends Timestamped{ /*기존 코드에 'extends Timestamped'를 추가*/
@Id // ID 값, Primary Key로 사용하겠다는 뜻입니다.
@GeneratedValue(strategy = GenerationType.AUTO) // 자동 증가 명령입니다.
private Long id;
@Column(nullable = false) // 컬럼 값이고 반드시 값이 존재해야 함을 나타냅니다.
private String title;
@Column(nullable = false)
private String tutor;
public String getTitle() {
return this.title;
}
public String getTutor() {
return this.tutor;
}
public Course(String title, String tutor) {
this.title = title;
this.tutor = tutor;
}
}
기존 코드에 '@EnableJpaAuditing' 이걸 추가해야 생성일/수정일 날짜가 자동 업데이트됨
/*Week02Application.java*/
package com.sparta.week02;
//이걸 추가해야 생성일/수정일 날짜가 자동 업데이트됨
@EnableJpaAuditing /*기존 코드에 이거만 추가*/
@SpringBootApplication
public class Week02Application {
public static void main(String[] args) {
SpringApplication.run(Week02Application.class, args);
}
//프로젝트에서 실제로 쓰이진 않음. 단지 JPA 사용을 보여주기 위해 튜터가 만들어본 코드임
@Bean
//repository: 쿼리를 날리는 녀석
public CommandLineRunner demo(CourseRepository repository) {
return (args) -> {
Course course1 = new Course("웹개발의봄, Spring", "남병관");
//save(): 테이블 만들고 저장하는 함수
repository.save(course1);
List<Course> courseList = repository.findAll();
for(int i=0; i<courseList.size(); i++) {
Course c = courseList.get(i);
System.out.println(c.getTutor());
}
};
}
}
http://localhost:8080/h2-console 들어가서 course 테이블 확인
created_at 컬럼과 modified_at 컬럼이 추가되었음
'Spring Framework' 카테고리의 다른 글
Lombok, DTO (0) | 2021.07.18 |
---|---|
JPA) JPA 심화 (0) | 2021.07.14 |
JPA) JPA 사용해보기 (0) | 2021.07.11 |
JPA) JPA 시작하기 (0) | 2021.07.09 |
MYSQL) 테이블 생성, 삽입, 조회 (0) | 2021.07.09 |