인강을 듣다 H2 데이터베이스 대신 MySQL 로 데이터베이스를 옮겨 보고 싶었다.
스프링 부트 설정 부터 시작해보겠다!
1)Spring Initializr 에서 H2 DataBase 대신에 MySQL 를 대신 선택한다.
만들어 주고 ~
2)MySQL Work Bench에 접속한다.
그 후 connection Name 에 일단 아무거나 입력하구
HostName 에는 localhost
Username에는 root
비밀번호는 초기에 mysql설치시 설정했던 비밀번호를 입력한후
testconnection 을 눌러주면 성공적으로 연결이 된다.
3)MySQL SCHEMAS 창에서 마우스 우클릭
create SCHEMA
이름 입력
apply 눌러준다!
잘 생성 된걸 볼 수 있다.
4)IntelliJ 를 실행한다.
실행해서 아까 다운로드된 파일을 열어서 build.grade 에서
runtimeOnly 'org'mysql:mysql-connector-j'를 확인한다.
여기서 주의점이 버젼에 따라서 여기다가 입력되는 값이 항상 달랐다. 끝이 java 인 경우도 있었으나 나의 버젼에는 맞지 않았나 보다.
5)application properties 에서 설정 정보 입력해주기!
이대로 똑같이 입력한다.
위에서 jpa_1부분에는 db를 ,username 에는 root 를 ,password 에는 아까 입력한 mysql 설치 당시에 입력했던 비밀번호를 입력한다.
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -->>역시 사람 마다 입력하는게 달랐어서 구글링 하는게 매우 힘들었다.
복사용으로
spring.datasource.url=jdbc:mysql://localhost:3306/shopdb?useSSL=false&serverTimezone=Asia/Seoul
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=12345678
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.properties.hibernate.format_sql=true;
넣어드렸습니당!
그러면 오류없이
서버가 도는 것 확인 할 수 있습니다!
테스트 케이스 와 class 를 작성해보겠습니다!
MemberClass
package jpabook.jpashop.domain;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
@Getter
@Setter
public class Member {
@Id @GeneratedValue
private Long id;
private String username;
}
MemberRepositoryClass
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@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);
}
}
테스트
import jpabook.jpashop.domain.Member;
import jpabook.jpashop.repository.MemberRepository;
import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringRunner.class)
@SpringBootTest
public class MemberRepositoryTest {
@Autowired
MemberRepository memberRepository;
@Test
@Transactional
@Rollback(false)
public void testMember(){
Member member=new Member();
member.setUsername("memberA");
Long saveId= memberRepository.save(member);
Member findMember=memberRepository.find(saveId);
Assertions.assertThat(findMember.getId()).isEqualTo(member.getId());
Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername());
Assertions.assertThat(findMember).isEqualTo(member);
}
}
이렇게 MySQL WorkBench에 1 과 memberA 가 들어와 있는 모습을 볼 수 있습니다.