Programming/Spring

[Mac/Intellij] Spring + mariaDB 연동 프로젝트 만들기 & 환경셋팅

예민한고라니 2022. 7. 6. 13:40

 

본 글은 마리아 디비가 설치되어 있다는 가정하에 시작합니다. brew가 설치되어있는 사용자는 아래의 명령어를 입력하고, 아닌 사람은 검색을 통해 설치해주세요
brew install mariadb

 

 

1. Spring 프로젝트 생성

본 게시글에서는 intellij의 spring initializr 플러그인을 활용할 것이다. 만약 없다면 아래의 사이트를 대신 이용하자.

https://start.spring.io/

 

group, projct Name을 설정해주고, opnJDK 11를 선택후 Next를 눌러준다.

 

 

이후 Spring Boot DevTools, Lombok, Spring Web, Spring Data JPA, MariaDB Driver

이렇게 5가지의 dependency들을 추가해후 create를 눌러준다.

생성 후 완전히 환경셋팅이 완료되기까지 오래걸리기 때문에 그사이에 디비를 설정해주도록 하자.

 

 

2. 마리아 디비 실행 및 연동할 데이터베이스 생성

> mysql

 

우선 터미널을 열고 위의 명령어를 입력하면 mariaDB가 실행된다.

그다음 show databases;를 입력하여 존재하는 디비들을 확인할 수 있다.

이때 테스트를 위해 이름이 겹치지 않는 적절한 db를 만들어준후 종료하도록 하자

이후, use명령어를 통해 사용할 디비에 접속하면된다.

 

MariaDB [(none)]> show Databases;
MariaDB [(none)]> create database [원하는 디비 이름];
MariaDB [(none)]> show Databases;
MariaDB [(none)]> use [원하는 디비 이름];

 

3. application.properties파일에 값 삽입

다시 intellij로 돌아와 application.properties파일에 아래 코드를 입력해준다.

이때 / 뒤에는 아까 생성한 디비이름을 넣어준다

spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/[원하는 디비 이름]
spring.datasource.username=root
spring.datasource.password=[password 값]

이때 root 계정에 패스워드 값을 입력해주는데, 잘 모르겠다면 root 계정 패스워드 변경을 하여 입력해주자

 

4. 테스트 코드 작성

이제 test 를 위한 entity와 repository 를 만들어보자.

아래와 같은 코드를 두개 작성해준다

 

1. Info.class 파일

@Entity
@Getter @Setter
public class Info {
    @Id @GeneratedValue
    private Long id;

    private String text;
}

2. InfoRepository.class 파일

@Repository
public class InfoRepository {
    @PersistenceContext
    private EntityManager em;

    public Long save(Info info){
        em.persist(info);
        return info.getId();
    }

    public Info find(Long id){
        return em.find(Info.class,id);
    }
}

 

이후 아래와 같은 테스트 코드를 작성해주고 실행하자

 

3. DbtestApplicationTests.class 파일

@RunWith(SpringRunner.class)
@SpringBootTest
@Rollback(value = false)
class DbtestApplicationTests {

    @Autowired
    InfoRepository infoRepository;

    @Test
    @Transactional
    void contextLoads() throws Exception {
        Info info = new Info();
        info.setText("test1");

        Long saveId = infoRepository.save(info);
        Info findInfo = infoRepository.find(saveId);

        Assertions.assertThat(findInfo.getId()).isEqualTo(info.getId());
        Assertions.assertThat(findInfo.getText()).isEqualTo(info.getText());
    }

}

전체 파일의 위치는 다음 사진에서 확인할 수 있다.

 

test코드가 정상 실행되었다!

 

5. DB에서 조회하자

MariaDB [디비 이름]> show tables;
MariaDB [디비 이름]> select * from info;

이제 터미널 창으로 돌아와서 아까만든 디비의 테이블을 확인한다.

잘 들어간 모습을 확인할 수 있다.