[SPRING_입문]/개발일지

[2주차] 개발일지 (2-4) JPA Application

Code_Otaku 2022. 6. 16. 16:02

1. Applicable JPA

JPA라는 기능을 통해 SQL의 SELECT 및 INSERT 기능을 대신 수행할 수 있다고 했다.

 

이번 시간에는 그것을 어떻게 유용하게 써먹을 수 있는지 알아보자.

 

우선 지금 교보재로 쓰고 있는 IntelliJ 기준으로 설명하겠다. 어짜피 이거 유효기간 만료되면 다시 이클립스로 돌아가야 할테니 이클립스에서 JPA를 쓰는 방법은 따로 공부해서 올리도록 하겠다.

 

자, 간단한 세팅부터 해보자.

 

프로젝트를 생성하였다면 resources 폴더 아래에 'application.properties' 라는 실행파일이 보일 것이다. 클릭!

server.port=8090

spring.jpa.open-in-view=false

spring.h2.console.enabled=true

spring.jpa.show-sql=true
spring.datasource.url=jdbc:h2:mem:testdb;MODE=MYSQL

필자는 다음과 같이 config를 설정해주었다.

다른 부분은 거두절미하고.. 맨 아랫줄을 살펴보도록 하자.

Spring 최신 버전에서는 저렇게 testdb 옆에 MYSQL 모드 설정을 따로 해줘야 작동한다고 하더라..

사실 이 부분에서 막혀가지고 한참이나 해맸다.

정체모를 예외처리가 뜬다면 참고 바란다.

 

 

다음은 JPA를 실제적으로 수행하기 위한 코드다.

@Bean
public CommandLineRunner demo(CourseRepository repository) {
    return (args) -> {

        Course course1 = new Course("웹 개발의 봄 Spring", "Code_Otaku");
        repository.save(course1);
        // repository.save(): SQL의 Insert 기능 수행

        List<Course> courseList =  repository.findAll();
        // repository.findAll(): SQL의 Select 기능 수행

        for(int i=0 ; i<courseList.size() ; i++){

            Course c = courseList.get(i);
            System.out.println(c.getTitle());
            System.out.println(c.getTutor());

        }

    };
}

아직 뭐가 뭔지 모르겠지만 딱 두 개의 메서드만 기억해두자.

repository.save()

repository.finAll()

 

주석처리된 부분과 같이 두 메서드는 각각 SQL에서 INSERT와 SELECT 기능을 수행한다.

@Bean은 혹시 내가 알던 그 자바 액션태그 표현식인가?

 

더 깊이 공부한 다음에 따로 다뤄보도록 하겠다.

매년 얼마씩 줘가면서 사용하는 유료툴은 참 여러가지로 편리한 거 같다.

이거 쓰다가 다시 이클립스로 돌아갈 수 있을지 모르겠읆.. 수구