안녕하세요~! Spring Boot와 MySQL을 연동하는 방법을 알려드리려 합니다. Spring Data JPA와 MySQL을 활용하여 사용자 데이터를 관리하는 기본적인 CRUD(Create, Read, Update, Delete) 기능을 구현하는 과정을 차근차근 알아가 보겠습니다.
프로젝트 설정
먼저 application.yml 기본 설정부터 알려드리겠습니다.
spring:
jpa:
database: mysql
hibernate.ddl-auto: update
show-sql: true
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:{portNum}/{databaseName}?serverTimezone=Asia/Seoul
username: root
password: {yourPassword}
portNum에 여러분이 설정한 포트번호(대략:3306)와 데이터베이스 이름(예를들어 mydb)그리고 패스워드를 설정해줍니다.
추가적으로 username도 설정하실수 있습니다.
의존성 추가
pom.xml 또는 build.gradle 파일에 Spring Data JPA와 MySQL 드라이버를 위한 의존성을 추가합니다.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'mysql:mysql-connector-java:8.0.33'
8.0.33에는 다운로드 받으신 mysql 버전을 적으시면 됩니다.
MySQL 설정
이후 {databaseName}과 같은 데이터 베이스를 만드신후 SpringBoot에서 Entity를 설정해 주겠습니다.
create database mydb;
use mydb;
create table app_user(
id INT PRIMARY key AUTO_INCREMENT,
email VARCHAR(255) UNIQUE NOT NULL,
name VARCHAR(255) NOT NULL,
role VARCHAR(255) NOT NULL
);
엔티티 클래스 설정
예를들어 User와 같은 class로 맵핑을 해준뒤 아래 코드의 버전은 SpringBoot 3.0이상입니다.
@Entity(name = "app_user")
@Table(name = "app_user")
@NoArgsConstructor
@Getter
@Builder
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "email", nullable = false, unique = true)
private String email;
@Column(name = "name", nullable = false)
private String name;
@Enumerated(EnumType.STRING)
@Column(name = "role", nullable = false)
private Role role;
@Builder
public User(int id, String email, String name, Role role) {
this.id = id;
this.name = name;
this.email = email;
this.role = role;
}
}
Repository class 정의
JpaRepository를 통해 mysql로 업데이트 해주시면 되겠습니다!!
/**
* JpaRepository를 확장함으로써, UserRepository는 User 엔티티에 대한
* CRUD(Create, Read, Update, Delete) 기능을 제공합니다.
*/
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByEmail(String email);
}
감사합니다.🙄
'Backend > 🌿Spring' 카테고리의 다른 글
[JPA] 의존 관계에 있는 연관된 데이터 삭제 처리: Spring과 JPA 및 Query (0) | 2024.01.20 |
---|---|
[SpringBoot/Error] Required URI template variable 'id' for method parameter type int is not present 해결 (0) | 2024.01.19 |
[Spring] 좋은 객체 지향 설계의 5가지 원칙 (SOLID) (2) | 2023.10.11 |
[Spring Boot] application.yml 내용 secret으로 관리하기 (0) | 2023.09.02 |
[SpringBoot/Error] version 3.0 OAuth2.0 카카오 로그인 오류 (2) | 2023.05.24 |