이시안 개발 블로그

스프링부트 + MySQL 연동하기 본문

🌱Spring

스프링부트 + MySQL 연동하기

ICAN 2021. 12. 20. 17:32

✨ 왜?

Oracle과 같이 MySQL도 실무에서 가장 많이쓰이는 RDMBS 중 하나입니다.

그래서 미리 MySQL 사용법도 익힐 겸 설정해보겠습니다.

📃 과정

Spring Initializr

우선 스프링부트 프로젝트를 생성합니다.

이 때 Dependencies에 MySQL Driver를 꼭 지정해줍시다.

application.yml

server:
  port: 8090
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/[스키마]?serverTimezone=Asia/Seoul
    username: 아이디
    password: 비밀번호
    driver-class-name: com.mysql.cj.jdbc.Driver

  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        #        show_sql: true
        format_sql: true

logging:
  level:
    org.hibernate.SQL: debug
decorator:
  datasource:
    datasource-proxy:
      logging: slf4j

DB 연결 설정을 해줍니다.

저는 jpa를 사용할 것이라 jpa 설정도 해줬습니다.

  • driver-class-name
    • com.mysql.jdbc.Driver는 Deprecated 되었습니다.
    • com.mysql.cj.jdbc.Driver를 사용해줍니다.
  • url
    • MySQL의 기본 포트번호는 3306입니다.
    • 스키마 부분에는 사용할 스키마(또는 데이터베이스)를 작성해줍니다.
    • serverTimezone을 설정하여 한국 시간으로 지정해줍니다.

테스트 케이스 작성하기

Member

@Entity
@Getter
@Setter
public class Member {

    @Id
    @GeneratedValue
    private Long id;
    private String username;

}

Member는 간단하게 id와 이름만 받는 엔티리로 지정했습니다.

MemberRepository

@Repository
public class MemberRepository {

    @PersistenceContext
    EntityManager em;

    public Long save(Member member) {
        em.persist(member);
        return member.getId();
    }

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

Jpa를 사용해서 MySQL에 데이터를 저장하기 위한 간단한 리포지토리입니다.

MemberRepositoryTest

@SpringBootTest
class MemberRepositoryTest {

    @Autowired
    MemberRepository memberRepository;

    @Test
    @Transactional
    @Rollback(value = false)
    public void testMember() {

        // given
        Member member = new Member();
        member.setUsername("HELLO SPRING");

        // when
        Long savedId = memberRepository.save(member);
        Member findMember = memberRepository.find(savedId);

        // then
        assertThat(findMember.getId()).isEqualTo(member.getId());
        assertThat(findMember.getUsername()).isEqualTo(member.getUsername());
        assertThat(findMember).isEqualTo(member);
    }

}
  • 통합 테스트를 위해 @SpringBootTest 어노테이션을 추가했고 MemberRepository를 의존 주입해줍니다.
  • @Transactional은 간단하게 동작이 정상적으로 처리되지 않으면 rollback을 시켜주는 어노테이션입니다.
  • @Rollback(value = false) 어노테이션은 테스트 시 정상적으로 작동이 되면 rollback을 막아서 DB에서 확인할 수 있게 설정해줍니다.

☄️ 결과

콘솔창 결과

콘솔에는 결과가 잘 찍혔습니다.

DB 결과

제가 지정한 스키마에도 데이터가 정상적으로 들어온 모습입니다.

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

JUnit5로 예외처리 테스트하기  (1) 2021.12.21
Comments