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

2023. 2. 17. 12:00·공부/Spring
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

'공부 > Spring' 카테고리의 다른 글

[Spring][스프링 MVC 1편] 스프링 MVC 어댑터 패턴 (controller v5)  (0) 2023.03.04
[Spring][인프런 스프링 MVC] MVC 구를 직접 개선해가며 스프링 MVC 구조를 이해하기 (controller v1~v4)  (0) 2023.03.01
[Spring][Thymeleaf] 공통 레이아웃 적용 (Thymeleaf Layout Dialect)  (1) 2023.02.14
[Spring][Thymeleaf] 타임리프 기초 문법  (2) 2023.02.12
[Spring][JPA] H2 데이터베이스를 사용한 JPA 기초 사용법  (0) 2023.02.10
'공부/Spring' 카테고리의 다른 글
  • [Spring][스프링 MVC 1편] 스프링 MVC 어댑터 패턴 (controller v5)
  • [Spring][인프런 스프링 MVC] MVC 구를 직접 개선해가며 스프링 MVC 구조를 이해하기 (controller v1~v4)
  • [Spring][Thymeleaf] 공통 레이아웃 적용 (Thymeleaf Layout Dialect)
  • [Spring][Thymeleaf] 타임리프 기초 문법
웅대
웅대
알고리즘과 백엔드를 중심으로 열심히 공부 중입니다! 같이 소통하며 공부해요!
    250x250
  • 웅대
    웅대 개발 블로그
    웅대
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 백준 알고리즘
        • dp
        • 문자열
        • 정렬
        • 스택
        • 브루트 포스
        • 이진 탐색
        • 정리
        • 우선순위 큐
        • 자료구조
        • 그래프
        • 기타
        • 그리디
      • 컴퓨터 언어
        • Kotlin
        • Python
        • C#
      • 공부
        • Database
        • Android Studio
        • Algorithm
        • 컴퓨터 구조론
        • Spring
        • lombok
        • AWS
        • Network
        • OS
        • Git & GitHub
        • AI
        • Computer Vision
        • 보안
        • Nginx
        • 프론트
        • express
        • GCP
        • grokking concurrency
        • DevOps
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    code tree
    embedding
    nn.RNN
    binary search
    bfs
    스택
    ci/cd
    parametric search
    Merge
    Vector Store
    influxDB CLI
    다익스트라
    파이썬
    스프링 OAuth2
    RNN
    codetree
    openvidu 배포
    ChatPromptTemplate
    푸쉬 알람
    AWS Lambda
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
웅대
[Spring] 스프링 mysql 데이터베이스와 jpa 연동
상단으로

티스토리툴바