본문 바로가기
공부/Spring

[Spring] 스프링 mysql 데이터베이스와 jpa 연동

by 웅대 2023. 2. 17.
728x90
반응형

본 포스팅은 mysql이 깔려있다는 가정하게 진행합니다.

 

mysql 데이터베이스와 연동 후 jpa를 사용할 예정이므로 다음과 같은 dependencies를 추가한다.

만약 기존 프로젝트에 mysql과 jpa를 사용하고 싶다면 build.gradle에 다음 두 줄을 적용한다.

 

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'mysql:mysql-connector-java:8.0.32'

cmd 창에 mysql -u root -p 명령어를 입력하고 비밀번호를 입력해서 접속한다.

create database [데이터베이 명]; 명령어를 입력하여 사용할 데이터베이스를 생성한다.

 

show databases; 명령어를 통해 생성이 되었는지 확인한다.

이제 스프링과 연동을 하기 위해 main/resources 디렉토리 안의 application.properties를 작성해야한다.

 

<application.properties>

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/shop?serverTimezone=Asia/Seoul
spring.datasource.username=root
spring.datasource.password=0000

#만들어진 sql 보여줌
spring.jpa.properties.hibernate.show_sql=true
#sql 가독성 좋게 보여줌
spring.jpa.properties.hibernate.format_sql=true
#db 초기화 전략. 기존 테이블 삭제 후 생성
spring.jpa.hibernate.ddl-auto=create

spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect

url은 mysql:// [데이터베이스 URL] : [포트 번호] / [데이터베이스 이름]?serverTimezone=UTC

으로 설정한다.

 

포트 번호를 건드리지 않고 mysql을 설치했다면 데이터베이스 포트 번호는 3306일 것이다.

 

그리고 mysql에 로그인 하기 위한 username과 그에 해당하는 비밀번호도 적어준다.

 

이제 엔티티를 만들어준다.

<Person>

@Entity //엔티티 정의
@Table(name="person_table") //사용하지 않으면 클래스 이름이 테이블 이름이 됨
@Getter //lombok getter
@Setter //lombok setter
public class Person {
    @Id //기본키를 의미. 반드시 기본키를 가져야함.
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NonNull
    @Column(unique = true, length=10) //유일하고 최대 길이가 10.
    private String personName;
    @Column(name="person_age")
    private int age;

}

 그리고 새로운 Person을 데이터베이스에 등록해 볼 예정이므로 레포지토리와 controller도 만든다.

 

<controller>

@Controller
@RequiredArgsConstructor
public class PersonController {
    private final PersonRepository personRepository;
    @PostMapping("/users/save")
    public void personSave(@RequestBody Person person) {
        personRepository.save(person);

    }
}

<repository>

@Repository
public interface PersonRepository extends JpaRepository<Person, Long> {


}

 이제 애플리케이션을 실행해본다.

테이블을 생성할 때 사용한 쿼리문을 보여주고 있다.

 

mysql workbench를 통해서 보면 테이블이 잘 생성되었다.

 

postman으로 컨트롤러에서 설정한 url로 POST 요청을 보내보면 데이터베이스에 잘 반영되는 모습을 확인할 수 있다.

 

 

github 주소

https://github.com/ezcolin2/Spring-Class/tree/main/mysql-jpa

 

GitHub - ezcolin2/Spring-Class: 스프링 클래스

스프링 클래스. Contribute to ezcolin2/Spring-Class development by creating an account on GitHub.

github.com

 

728x90
반응형

댓글