Compare commits
4 Commits
c50e8d835b
...
kmbin92_20
Author | SHA1 | Date | |
---|---|---|---|
3033582f8e | |||
51a29996f5 | |||
a8e1a15b1d | |||
d1bf1dd477 |
44
build.gradle
44
build.gradle
@@ -1,9 +1,3 @@
|
|||||||
buildscript {
|
|
||||||
ext {
|
|
||||||
queryDslVersion = "5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id 'java'
|
id 'java'
|
||||||
id 'org.springframework.boot' version '3.5.4'
|
id 'org.springframework.boot' version '3.5.4'
|
||||||
@@ -30,41 +24,41 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
// 개발용 의존성 추가
|
|
||||||
developmentOnly 'org.springframework.boot:spring-boot-devtools'
|
developmentOnly 'org.springframework.boot:spring-boot-devtools'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
|
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
|
||||||
// PostgreSQL JDBC 드라이버
|
// PostgreSQL JDBC
|
||||||
runtimeOnly 'org.postgresql:postgresql'
|
runtimeOnly 'org.postgresql:postgresql'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||||
|
|
||||||
// Spring Security 추가
|
// Spring Securit
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-security'
|
implementation 'org.springframework.boot:spring-boot-starter-security'
|
||||||
|
|
||||||
// Validation 추가
|
// Validation
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-validation'
|
implementation 'org.springframework.boot:spring-boot-starter-validation'
|
||||||
|
|
||||||
// MapStruct 추가 (안정적인 버전으로 수정)
|
// MapStruct
|
||||||
implementation 'org.mapstruct:mapstruct:1.5.5.Final'
|
implementation 'org.mapstruct:mapstruct:1.5.5.Final'
|
||||||
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final'
|
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final'
|
||||||
|
|
||||||
// MyBatis 추가
|
// MyBatis
|
||||||
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'
|
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'
|
||||||
|
|
||||||
// jwt
|
// jwt
|
||||||
implementation 'io.jsonwebtoken:jjwt-api:0.12.5'
|
implementation 'io.jsonwebtoken:jjwt-api:0.12.5'
|
||||||
|
|
||||||
|
// lombok
|
||||||
compileOnly 'org.projectlombok:lombok'
|
compileOnly 'org.projectlombok:lombok'
|
||||||
annotationProcessor 'org.projectlombok:lombok'
|
annotationProcessor 'org.projectlombok:lombok'
|
||||||
// Lombok과 MapStruct 함께 사용을 위한 바인딩
|
|
||||||
annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0'
|
annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0'
|
||||||
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
||||||
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
|
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
|
||||||
|
|
||||||
// querydsl
|
// querydsl
|
||||||
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta"
|
implementation 'io.github.openfeign.querydsl:querydsl-jpa:6.11'
|
||||||
annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}:jakarta"
|
annotationProcessor 'io.github.openfeign.querydsl:querydsl-apt:6.11:jpa'
|
||||||
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
|
annotationProcessor 'jakarta.annotation:jakarta.annotation-api'
|
||||||
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
|
annotationProcessor 'jakarta.persistence:jakarta.persistence-api'
|
||||||
|
|
||||||
// p6spy
|
// p6spy
|
||||||
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
|
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
|
||||||
}
|
}
|
||||||
@@ -74,16 +68,10 @@ tasks.named('test') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// querydsl
|
// querydsl
|
||||||
def querydslDir = "$buildDir/generated/querydsl"
|
def generatedSrcDir = 'build/generated/sources/annotation-processor'
|
||||||
|
clean {
|
||||||
sourceSets {
|
delete file(generatedSrcDir)
|
||||||
main.java.srcDirs += [ querydslDir ]
|
|
||||||
}
|
}
|
||||||
|
tasks.withType(JavaCompile).configureEach {
|
||||||
tasks.withType(JavaCompile) {
|
options.generatedSourceOutputDirectory = file(generatedSrcDir)
|
||||||
options.annotationProcessorGeneratedSourcesDirectory = file(querydslDir)
|
|
||||||
}
|
|
||||||
|
|
||||||
clean.doLast {
|
|
||||||
file(querydslDir).deleteDir()
|
|
||||||
}
|
}
|
@@ -11,6 +11,8 @@
|
|||||||
password varchar(100) not null,
|
password varchar(100) not null,
|
||||||
user_id varchar(100) not null,
|
user_id varchar(100) not null,
|
||||||
refresh_token varchar(200),
|
refresh_token varchar(200),
|
||||||
primary key (oid),
|
primary key (oid)
|
||||||
constraint uk_member_user_id unique (user_id)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
create index idx_member_user_id
|
||||||
|
on st_member (user_id);
|
||||||
|
@@ -18,8 +18,8 @@ import java.time.LocalDateTime;
|
|||||||
@Builder
|
@Builder
|
||||||
@Table(
|
@Table(
|
||||||
name = "st_member",
|
name = "st_member",
|
||||||
uniqueConstraints = {
|
indexes = {
|
||||||
@UniqueConstraint(name = "uk_member_user_id", columnNames = "user_id")
|
@Index(name = "idx_member_user_id", columnList = "user_id")
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
public class Member extends BaseEntity {
|
public class Member extends BaseEntity {
|
||||||
@@ -44,14 +44,4 @@ public class Member extends BaseEntity {
|
|||||||
@Column(name = "last_login_at")
|
@Column(name = "last_login_at")
|
||||||
private LocalDateTime lastLoginAt;
|
private LocalDateTime lastLoginAt;
|
||||||
|
|
||||||
/**
|
|
||||||
* 엔티티 저장 후 실행되는 메서드
|
|
||||||
* createdOid와 updatedOid를 자기 자신의 oid로 설정
|
|
||||||
*/
|
|
||||||
@PostPersist
|
|
||||||
protected void onPostPersist() {
|
|
||||||
if (this.getCreatedOid() == null) {
|
|
||||||
this.setCreatedOid(this.getOid());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
@@ -17,6 +17,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static com.bio.bio_backend.global.utils.OidUtil.generateOid;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -53,6 +55,10 @@ public class MemberServiceImpl implements MemberService {
|
|||||||
.role(MemberRole.getDefault())
|
.role(MemberRole.getDefault())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
Long oid = generateOid();
|
||||||
|
member.setOid(oid);
|
||||||
|
member.setCreatedOid(oid);
|
||||||
|
|
||||||
Member savedMember = memberRepository.save(member);
|
Member savedMember = memberRepository.save(member);
|
||||||
|
|
||||||
return memberMapper.toMemberDto(savedMember);
|
return memberMapper.toMemberDto(savedMember);
|
||||||
|
@@ -6,10 +6,11 @@ import lombok.Setter;
|
|||||||
import org.springframework.data.annotation.CreatedDate;
|
import org.springframework.data.annotation.CreatedDate;
|
||||||
import org.springframework.data.annotation.LastModifiedDate;
|
import org.springframework.data.annotation.LastModifiedDate;
|
||||||
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
|
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
|
||||||
import com.bio.bio_backend.global.utils.OidUtil;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static com.bio.bio_backend.global.utils.OidUtil.generateOid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 모든 엔티티가 상속받는 기본 엔티티 클래스
|
* 모든 엔티티가 상속받는 기본 엔티티 클래스
|
||||||
* 공통 필드들을 정의하고 JPA Auditing을 지원합니다.
|
* 공통 필드들을 정의하고 JPA Auditing을 지원합니다.
|
||||||
@@ -40,14 +41,7 @@ public abstract class BaseEntity {
|
|||||||
|
|
||||||
@PrePersist
|
@PrePersist
|
||||||
protected void onCreate() {
|
protected void onCreate() {
|
||||||
LocalDateTime now = LocalDateTime.now();
|
if(this.oid == null) this.oid = generateOid();
|
||||||
this.oid = OidUtil.generateOid();
|
if(this.createdOid != null && this.updatedOid == null) this.updatedOid = this.createdOid;
|
||||||
this.createdAt = now;
|
|
||||||
this.updatedAt = now;
|
|
||||||
}
|
|
||||||
|
|
||||||
@PreUpdate
|
|
||||||
protected void onUpdate() {
|
|
||||||
this.updatedAt = LocalDateTime.now();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user