앞서 말씀 드리자면 jpa를 조금 독학으로 하다보니 코드가 조금 중구난방이어서 김영한 개발자님 동영상 강의를 보고 코드를 수정하고 있습니다. ㅠㅠ 독학의 장점은 많은걸 얻을수 있지만 그만큼 잘못된 방법을 얻을수 도 있네요
지금 이방법도 틀릴수 있어서 계속해서 수정은 하도록 하겠습니다.
당장 운영서버에는 적용못하고요. 일단 현재 제 pc에서 잘 작동하면 운영 웹서버에 업로드 예정입니다.
그리고 이번엔 테스트 코드도 함께 작성하였습니다.
파일 위치는 Domain/Notice/
Notice 클래스 File 클래스는 조금 나중에 넣겠습니다.
package kr.co.kshproject.webDemo.Domain.Notice;
import lombok.*;
import javax.persistence.*;
import javax.validation.constraints.NotEmpty;
@Entity
@Table(name = "Notice")
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Notice {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "NOTICE_SEQ")
@SequenceGenerator(name = "NOTICE_SEQ", sequenceName = "NOTICE_SEQ", allocationSize = 1)
@Column(name = "ID")
private Long id; //key
@NotEmpty
@Setter
private String username;
@NotEmpty
@Setter
private String title;
@NotEmpty
@Setter
private String contents;
@NotEmpty
@Setter
private String email;
@NotEmpty
@Setter
@Column(name = "created_date")
private String createdDate;
}
NoticeRepository 클래스
@Repository
public interface NoticeRepository extends JpaRepository<Notice,Long> {
}
참고로 JpaRepository 클래스는에는 유용하 메서드들이 있어서 NoticeRepository 인터페이스에서 상속받아서 사용하면됩니다.
https://docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa/repository/JpaRepository.html
테스트 코드
package kr.co.kshproject.webDemo.Domain.Notice;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
import java.util.Optional;
import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest
class NoticeRepositoryImplTest {
@Autowired
NoticeRepository noticeRepository;
@AfterEach
void afterEach(){
noticeRepository.deleteAll();
}
@Test
void save() {
//생성
Notice notice= new Notice(null,"test","title","cotenst","email","date");
//세이브
Notice savedNotice=noticeRepository.save(notice);
//체크
Optional<Notice> findNotice=noticeRepository.findById(notice.getId());
assertThat(findNotice.isPresent()).isTrue();
assertThat(findNotice.get()).isEqualTo(savedNotice);
}
@Test
void findAll() {
//생성
Notice notice1= new Notice(null,"test1","title","cotenst","email","date");
Notice notice2= new Notice(null,"test2","title","cotenst","email","date");
//세이브
noticeRepository.save(notice1);
noticeRepository.save(notice2);
//find
List<Notice> result = noticeRepository.findAll();
//check
assertThat(result.size()).isEqualTo(2);
assertThat(result).contains(notice1, notice2);
}
}
완료:
문제없이 되었죠.
기존에는 직접적으로 만들어서 EntityMaganger로 했는데요. 암튼 이 변경작업이 생각보다 어렵네요... ㅠㅠㅠㅠ 흠 JpaRepository가 훨씬 편하고 생산성을 높일수 있다고 생각이 듭니다. 천천히 일단 할거고요. 일단 게시판이 완성되면 운영서버에 올리도록 하겠습니다. 관리자 페이지 쪽도 변경을 해야해서 좀 변경할게 많네요. ;;; ㅎㅎ
'웹 > Spring vue 웹 개발' 카테고리의 다른 글
spring vue 게시판03 리팩토링 update test code (0) | 2023.10.02 |
---|---|
spring vue 게시판02 리팩토링 (service/controller) (0) | 2023.10.01 |
spring vue 장바구니 07 (0) | 2023.06.14 |
spring vue 장바구니 06 (0) | 2023.06.13 |
spring vue 장바구니 05 (0) | 2023.06.12 |