DevKim

[Spring] CRUD - H2 DB 웹콘솔로 확인해보기 본문

Spring Boot

[Spring] CRUD - H2 DB 웹콘솔로 확인해보기

on_doing 2021. 4. 13. 11:33
728x90

일단 학습을 위해, In-memory DB인 H2 DB를 사용하여 웹콘솔로 CRUD 되는 것을 확인해보았다.

(+) DB의 기본인 생성일자와 수정일자도 추가해줌

 

 

먼저 웹콘솔로 보이게하기 위해 다음과 같은 코드를 추가해준다.

spring.h2.console.enabled=true 
spring.datasource.url=jdbc:h2:mem:testdb

 

CRUD를 위해 먼저 생성해야하는 것

1. repository -> extends JpaRepository 하면 됨

2. update을 위한 service package

 

학습 기록용 이기에.. 이런 부분들에 대해선 자세히 서술하진 않겠다.

 

[1] Create

repository.save(new Course("스프링 연습하기","홍길동"));

 

+) 생성일자,수정일자 추가

생성일자와 수정일자를 추가해주기 위해 TimeStamped 라는 class를 만들어, 상속을 통하여 가져다 사용하였다.

//Timestamped.java
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class Timestamped { 

@CreatedDate 
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime modifiedAt;
}

@MappedSuperclass

: 클래스를 상속했을 때 해당 멤버변수를 칼럼으로 인식해줌

 

@CreatedDate

: 생성일자를 나타냄

 

@LastModifiedDate

: 수정일자를 나타냄

 

* 상속으로만 사용할 수 있도록 abstract로 선언 

 

[2] Read

데이터를 읽어오는건 간단하다.

findAll로 모든 데이터를 쭉 긁어오거나, findById를 이용해 특정 id값의 데이터만 가져오는 것이다.

//Read All
System.out.println("데이터 전부 인쇄");
List<Course> courseList = repository.findAll();
for (int i = 0; i < courseList.size(); i++) {
  Course c = courseList.get(i);
  System.out.println(c.getId());
  System.out.println(c.getTitle());
  System.out.println(c.getTutor());
}

//Read only one
System.out.println("아이디가 1인 값만 인쇄");
Course c = repository.findById(1L).orElseThrow(() -> new NullPointerException("id 존재하지 않음"));
System.out.println(c.getTitle());
System.out.println(c.getTutor());

 

[3] Update

-main class에 update 메소드를 추가해주어야한다.

//Course.java
public void update(Course course){ 
  this.title = course.title; 
  this.tutor = course.tutor; 
}

생성한 Service package안에 CourseService.java 를 생성해주었다.

//CourseService.java
@RequiredArgsConstructor
@Service
public class CourseService {
    private final CourseRepository courseRepository;

    //update
    @Transactional
    public Long update(Long id, CourseDto courseDto)
    {
        //id를 통해 찾기
        Course course1= courseRepository.findById(id).orElseThrow(()->new NullPointerException("해당 값은 존재하지 않음"));
        course1.update(courseDto);

        return course1.getId();

    }

}

@RequiredArgsConstructor

: final로 선언한 repo의 기본 생성자를 제공하는 Lombok

 

@Transactional

:SQL 쿼리가 일어나야함을 스프링에게 알려줌. 자동으로 DB에 적용됨

 

*findById를 통해 id로 특정 값을 찾을 땐 반드시 orElseThrow로 예외처리에 대한 대처사항을 적어줘야한다.

*Dto를 따로 생성하여 이것으로 데이터를 주고 받는다.

//Application.java
courseService.update(1L, new_course); //id=1인 데이터 update

[Application]

-update 할 id와 대상 전달 

 

[Service]

update할 object 찾음 -> object의 update 메소드에 전달

 

[Course.java]

해당 데이터로 update

 

[4] DELETE

courseRepository.deleteAll();
728x90

'Spring Boot' 카테고리의 다른 글

[JPA] Query 생성 - between method  (0) 2021.04.23
[Spring] REST API 만들기  (0) 2021.04.13
CommandLineRunner,@Bean,@Component  (0) 2021.04.08
[H2] H2 DB에 테이블 생성,삽입,조회  (0) 2021.04.04
[DB] RDBMS - H2 생성,삽입,조회  (0) 2021.04.02
Comments