전에 jpa없이 저장기능을 만들었을때는 if문으로 pk값이 없으면 저장, 있으면 수정으로 인식되게 만들어 주었다. 그런데 이번에는 jpa의 저장함수가 이것을 자동으로 제공해줘서 만들 필요가 없다.
public Dept save(Dept dept){
Dept dept2 = deptRepository.save(dept);
return dept2;
}
jpa를 사용하면 repository에서 구현을 따로 하지 않아도 되서 편리하다.
respoitory, service, jsp는 모두 앞에서 했던 것의 반복이라 생략하자.
저장은 잘 됐지만 시간이 나오지 않는다. 처음 insertTime변수를 지정할때 시간이 저장되게 변수값을 지정해주지 않았기 때문이다. 시간 값을 입력해주자.
지정해주는 방법은 여러가지 이지만 가장 추천하는 방법은 어노테이션을 이용하는 방법이다.
@PrePersist // jpa에서 insert가 실행되기 전에 실행하는 함수, 이 함수가 먼저 실행되고 insert문이 실행이된다.
void OnPrePersist(){
LocalDateTime localDateTime = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter
= DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
this.insertTime = localDateTime.format(dateTimeFormatter);
}
insert가 일어나기 전에 함수를 실행시켜주는 함수이다. 이걸해주면 insert전에 시간을 입력해줄 수 있다.
@PreUpdate
void OnPreUpdate() {
// update 하기전에 현재날짜를 넣기
this.updateTime = LocalDateTime.now()
.format(DateTimeFormatter
.ofPattern("yyyy-MM-dd HH:mm:ss"));
// insertTime 같이 변경 (생성일시 == 수정일시 동일하게 처리)
this.insertTime = this.updateTime;
}
update가 일어나기 전에 함수를 실행시켜주는 함수이다. 이걸해주면 update전에 시간을 입력해줄 수 있다.
시간이 잘 저장된다.
public boolean deleteById(int dno){
if (deptRepository.existsById(dno) == true) {
deptRepository.deleteById(dno);
return true;
}else {
return false;
}
}
existsById라는 이름의 jpa함수를 사용해서 해당dno를 가진 객체가 존재할때만 삭제를 하게 만들었다.
나머지는 모두 동일하다.
jsp는 이전과 동일하므로 생략한다.