Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 한빛미디어
- 이것이자바다
- Java
- 도메인 주도 개발 시작하기
- cicd
- 백준
- AWS 비용 최적화 바이블
- 러닝GO
- WebTestClient
- 2817
- 스프링
- Vue
- 네트워크
- 자바스크립트
- MySQL
- VueDevTools
- 1436
- HTTP
- GitHub
- JavaScript
- vue-router
- Git
- Junit5
- 이것이안드로이드다
- 이벤트루프
- pinia
- 알고리즘
- 혼공컴운
- 구글 엔지니어는 이렇게 일한다
- 헤드퍼스트 디자인패턴
Archives
- Today
- Total
이시안 개발 블로그
스프링부트 + MySQL 연동하기 본문
✨ 왜?
Oracle과 같이 MySQL도 실무에서 가장 많이쓰이는 RDMBS 중 하나입니다.
그래서 미리 MySQL 사용법도 익힐 겸 설정해보겠습니다.
📃 과정
우선 스프링부트 프로젝트를 생성합니다.
이 때 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에서 확인할 수 있게 설정해줍니다.
☄️ 결과
콘솔에는 결과가 잘 찍혔습니다.
제가 지정한 스키마에도 데이터가 정상적으로 들어온 모습입니다.
'🌱Spring' 카테고리의 다른 글
JUnit5로 예외처리 테스트하기 (1) | 2021.12.21 |
---|
Comments