[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


댓글

T O P