Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 리눅스
- GIT
- baeldung
- resttemplate
- 네트워크 설정
- d
- 스프링부트핵심가이드
- network configuration
- 페이징
- 티스토리 쿠키 삭제
- 알파회계
- 코드로배우는스프링부트웹프로젝트
- 자료구조와 함께 배우는 알고리즘 입문
- 데비안
- 친절한SQL튜닝
- 목록처리
- ㅒ
- iterator
- 서버설정
- 구멍가게코딩단
- 스프링 시큐리티
- 처음 만나는 AI 수학 with Python
- 선형대수
- 자료구조와함께배우는알고리즘입문
- /etc/network/interfaces
- 자바편
- Kernighan의 C언어 프로그래밍
- 이터레이터
- 코드로배우는스프링웹프로젝트
- 처음 만나는 AI수학 with Python
Archives
- Today
- Total
bright jazz music
guestbook : 03. 자동 일자/시간 처리(등록/수정 등) +Querydsl (2) 본문
Framework/Spring
guestbook : 03. 자동 일자/시간 처리(등록/수정 등) +Querydsl (2)
bright jazz music 2022. 6. 30. 22:32이전글: 2022.06.29 - [JAVA/Spring] - guestbook : 03. 자동 일자/시간 처리(등록/수정 등) +Querydsl (1)
1 . 엔티티 setter 기능 만들기(수정 시간 테스트)
엔티티 클래스는 가능하면 setter관련 기능을 만들지 않기를 권장한다. 엔티티 객체가 애플리케이션 내부에서 변경되면 JPA를 관리하는 쪽이 복잡해질 수 있기 때문이다. 따라서 수정 최소화가 권장된다. 그러나 필요에 따라서 수정기능을 만들 수도 있다.
Guestbook 클래스의 title과 content를 수정할 수 있도록 해당 클래스에 changeTitle()과 changeContent() 메서드를 추가하자.
//Guestbook.java
package com.example.guestbook.entity;
import lombok.*;
import javax.persistence.*;
@Entity // * 엔티티로 선언하지 않으면 Qdomain이 생성되지 않는다.
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Guestbook extends BaseEntity{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long gno;
@Column(length = 100, nullable = false)
private String title;
@Column(length = 1500, nullable = false)
private String content;
@Column(length = 50, nullable = false)
private String writer;
public void changeTitle(String title){ // <== 방명록 제목 수정을 위해 추가
this.title = title;
}
public void changeContent(String content) {// <== 방명록 내용 수정을 위해 추가
this.content = content; }
}
Guestbook클래스가 상속하는 클래스인 BaseEntity에는 modDate라는 속성이 존재한다(이전글 참조). 이 속성은 최종 수정시간이 반영되기 때문에 특정 엔티티를 수정하고 save() 했을 경우에만 수정내역이 반영된다.
2 . setter 기능 테스트 (수정 메서드 테스트를 위한 테스트 코드 작성)
//GuestbookRepositoryTests.java
package com.example.guestbook.repository;
import com.example.guestbook.entity.Guestbook;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Optional;
import java.util.stream.IntStream;
@SpringBootTest
public class GuestbookRepositoryTests {
@Autowired
private GuestbookRepository guestbookRepository; //의존성 주입
@Test
public void insertDummies(){
//테스트 데이터 300개 입력
IntStream.rangeClosed(1, 300).forEach(i -> {
Guestbook guestbook = Guestbook.builder()
.title("Title...." + i)
.content("Content..." + i)
.writer("user" + (i %10))
.build();
System.out.println(guestbookRepository.save(guestbook));
});
}
@Test //<== guestbook 업데이트 테스트를 위해 추가
public void updateTest(){
Optional<Guestbook> result = guestbookRepository.findById(300L);
// DB에 존재하는 번호인 300번으로 테스트
//Optional : If non-null, the value; if null, indicates no value is present.
// isPresent() 또는 isEmpty()로 확인.
System.out.println("result.isPresent())="+ result.isPresent());
if(result.isPresent()) {
Guestbook guestbook = result.get();
guestbook.changeTitle("Change Title!!!!!!!!!!!!!!!");
guestbook.changeContent("change content!!!!!!!!!!!!!!!");
guestbookRepository.save(guestbook);
}
}
}
작성을 완료했으면 해당 테스트 코드(updateTest()) 실행.
'Framework > Spring' 카테고리의 다른 글
guestbook : 05. DTO를 사용한 Querydsl 테스트 (0) | 2022.07.01 |
---|---|
guestbook : 04. querydsl 테스트 (0) | 2022.07.01 |
guestbook : 03. 자동 일자/시간 처리(등록/수정 등) +Querydsl (1) (0) | 2022.06.29 |
guestbook : 02. 기본 화면 레이아웃 구성 (0) | 2022.06.28 |
Thymeleaf 타임리프 기본 + Simple Sidebar (0) | 2022.06.28 |
Comments