728x90
반응형
SMALL
1️⃣ 프로젝트 의존성 추가
가장 먼저 build.gradle에 의존성을 추가한다.
dependencies {
// MySQL
implementation 'mysql:mysql-connector-java:8.0.33'
// JPA
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
compileOnly 'org.projectlombok:lombok'
implementation 'org.springframework.boot:spring-boot-starter-web'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
나 같은 경우에는 connecter-java에 MySQL 버전을 명시해줬다. MySQL 버전을 확인하려면 cmd 환경에서 아래와 같이 입력해보면 된다.
sudo mysql -u root
2️⃣ application.yaml에 DB정보를 추가한다.
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/snsdb?useSSL=false&allowPublicKeyRetrieval=true
username: root
jpa:
hibernate:
ddl-auto: update
database: mysql
show-sql: true
properties:
hibernate:
format_sql: true
defer-datasource-initialization: true
DB의 url이 잘 설정해주는게 중요하다. mysql을 사용한다면 3306포트를 설정하면되고 포트뒤에는 DB테이블 이름을 입력하면 된다. DB 테이블을 생성하는 방법은 아래와 같다.
CREATE DATABASE snsdb;
생성한 DB를 확인하려면
SHOW DATABASES;
생성된 DB를 볼 수 있다.
3️⃣ 엔티티(Entity)를 생성해준다.
package com.fastcampus.sns.model.entity;
import com.fastcampus.sns.model.UserRole;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;
import java.sql.Timestamp;
import java.time.Instant;
@Entity
@Table(name = "\"user\"")
@Getter
@Setter
@SQLDelete(sql = "UPDATE \"user\" SET deleted_at = NOW() WHERE id=?")
@Where(clause = "deleted_at is NULL")
public class UserEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name="user_name")
private String userName;
@Column(name="password")
private String password;
@Column(name = "role")
@Enumerated(EnumType.STRING)
private UserRole role = UserRole.USER;
@Column(name = "registered_at")
private Timestamp registeredAt;
@Column(name = "updated_at")
private Timestamp updatedAt;
@Column(name = "deleted_at")
private Timestamp deletedAt;
@PrePersist
void registeredAt() {
this.registeredAt = Timestamp.from(Instant.now());
}
@PreUpdate
void updatedAt() {
this.updatedAt = Timestamp.from(Instant.now());
}
public static UserEntity of(String userName, String password) {
UserEntity userEntity = new UserEntity();
userEntity.setUserName(userName);
return userEntity;
}
}
4️⃣ 프로젝트 실행
프로젝트를 실행하게 되면 Hibernate로 테이블 생성에 필요한 SQL을 확인할 수 있다.
이 부분은 캡쳐를 못했다.
5️⃣ 테이블 생성 확인
사용할 DB를 선택하고
USE snsdb;
생성된 table을 확인한다.
show tables;
테이블의 각 컬럼들을 확인한다.
show columns from user;
그러면 JPA로 생성된 테이블의 컬럼들을 확인할 수 있다.
728x90
반응형
'Java' 카테고리의 다른 글
오버로딩 vs 오버라이딩 (0) | 2023.10.20 |
---|---|
[Annotation] Spring Framwork Annotation 알아보기 (0) | 2023.05.22 |