[SpringBoot] 스프링부트 프로젝트 생성 후 JPA 사용 및 테스트하기2 RUD 테스트~ORM/JPA~(만들기 스프링부트3.25 )_IntelliJ IDEA 2024.1 JDK17 spring-boot test--++
* 초기 세팅 (개발환경) 및 설정
https://rockbottomdevbus.blogspot.com/2024/04/springboot-1-325-intellij-idea-20241.html
* 이전글
[SpringBoot] 스프링부트 프로젝트 생성 후 JPA 사용 및 테스트하기1 엔티티 설정 및 Insert 테스트~JPA 사용방법~
* 테스트 설정 + RUD
3. Read (Select)
- BoardRepositoryTests.java 파일에 Select Test 메서드 추가
-- BoardRepositoryTests.java
@Test
public void testSelect() {
long bno = 100L;
Optional<Board> result = boardRepository.findById(bno);
Board board = result.orElseThrow();
log.info("board : " + board);
}
4. Update
- Board.java 파일에 change 메서드 추가
-- Board.java
// 엔티티 내에서 변경 가능한 title과 content 값을 수정하는 메서드.
public void change(String title, String content){
this.title = title;
this.content = content;
}
- BoardRepositoryTests.java 파일에 Update 테스트 메서드 추가
--BoardRepositoryTests.java
// update
// Entity는 생성시 불변이면 좋으나, 변경이 일어날 경우 최소한으로 설계..
@Test
public void testUpdate() {
long bno = 100L;
Optional<Board> result = boardRepository.findById(bno);
Board board = result.orElseThrow();
board.change("update...Title1000","update content......100");
boardRepository.save(board);
log.info("board : " + board);
}
5. Delete
- BoardRepositoryTests.java Delete 테스트 메서드 추가
--BoardRepositoryTests.java
//삭제
@Test
public void testDelete() {
long bno = 100L;
boardRepository.deleteById(bno);
}
* ORM / JPA
ORM (Object Relational Mapping)
- 객체 지향 패러다음을 관계형 데이터베이스에 보존하는 기술
- 객체와 관계형 데이터베이스의 테이블을 매핑해서 사용하는 방법
- 관계형 데이터베이스에서는 Table을 설계하는데 새로운 Table에는 컬럼을 정의하고, 컬럼에 맞는 데이터 타입을 지정해서 데이터를 보관하는 틀을 만든다는 의미에서 Class와 상당히 유사
- 클래스는 데이터베이스의 데이블과 매핑하기 위해서 만들어진 것이 아니기 때문에 RDB테이블과 어쩔 수 없는 불일치가 존재하는 ORM은 이 둘의 불일치와 제약사항을 해결하는 역할을 담당함.
- 장점
- 특정 데이터베이스에 종족되지 않음
- 객체 지향적 프로그래밍
- 생성성 향상
- 단점
- 복잡한 쿼리 처리
- 성능 저하 위험
- 학습 시간
JPA (Java Persistence API)
- 자바 ORM기술에 대한 API표준
- JPA는 인터페이스이고, 이를 구현한 대표적인 구현체로 Hibernate, EclipseLink, DataNucleus, OpenJpa, TopLink등이 있음
- JPA인터페이스를 구현한 가장 대표적인 오픈 소스가 Hibernate이고, Spring Data JPA는 Hibernate를 쉽게 사용할 수 있는 추가적인 API를 제공하고 있음.
* 다음 글
[SpringBoot] 스프링부트 프로젝트 생성 후 JPA 사용 및 테스트하기3 Pageing~쿼리 메소드 및 @Query 테스트~
https://rockbottomdevbus.blogspot.com/2024/04/springboot-jpa-3-pageing-query-325.html
댓글
댓글 쓰기