From b7aee85b9bea3253619c664332d9641f5fcd71aa Mon Sep 17 00:00:00 2001 From: haerong22 Date: Wed, 19 Oct 2022 00:37:06 +0900 Subject: [PATCH] #24 simple sns: db settings(postgresql) --- simple_sns/build.gradle | 10 ++--- .../java/com/example/sns/SnsApplication.java | 2 +- .../sns/config/ImprovedNamingStrategy.java | 45 +++++++++++++++++++ .../controller/response/UserJoinResponse.java | 2 + .../example/sns/model/entity/UserEntity.java | 8 ++-- .../src/main/resources/application.properties | 1 - simple_sns/src/main/resources/application.yml | 23 ++++++++++ 7 files changed, 81 insertions(+), 10 deletions(-) create mode 100644 simple_sns/src/main/java/com/example/sns/config/ImprovedNamingStrategy.java delete mode 100644 simple_sns/src/main/resources/application.properties create mode 100644 simple_sns/src/main/resources/application.yml diff --git a/simple_sns/build.gradle b/simple_sns/build.gradle index 0d38bb74..5b7132d5 100644 --- a/simple_sns/build.gradle +++ b/simple_sns/build.gradle @@ -53,8 +53,8 @@ task cleanFrontEnd(type: Delete) { delete "$projectDir/front-end/static", "$projectDir/front-end/node_modules" } -npmBuild.dependsOn npmInstall -copyFrontEnd.dependsOn npmBuild -compileJava.dependsOn copyFrontEnd - -clean.dependsOn cleanFrontEnd \ No newline at end of file +//npmBuild.dependsOn npmInstall +//copyFrontEnd.dependsOn npmBuild +//compileJava.dependsOn copyFrontEnd +// +//clean.dependsOn cleanFrontEnd \ No newline at end of file diff --git a/simple_sns/src/main/java/com/example/sns/SnsApplication.java b/simple_sns/src/main/java/com/example/sns/SnsApplication.java index 265f9a37..00af6cb8 100644 --- a/simple_sns/src/main/java/com/example/sns/SnsApplication.java +++ b/simple_sns/src/main/java/com/example/sns/SnsApplication.java @@ -4,7 +4,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) +@SpringBootApplication public class SnsApplication { public static void main(String[] args) { diff --git a/simple_sns/src/main/java/com/example/sns/config/ImprovedNamingStrategy.java b/simple_sns/src/main/java/com/example/sns/config/ImprovedNamingStrategy.java new file mode 100644 index 00000000..7cc8fcc3 --- /dev/null +++ b/simple_sns/src/main/java/com/example/sns/config/ImprovedNamingStrategy.java @@ -0,0 +1,45 @@ +package com.example.sns.config; + +import org.hibernate.boot.model.naming.Identifier; +import org.hibernate.boot.model.naming.PhysicalNamingStrategy; +import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; +import org.springframework.util.StringUtils; + +public class ImprovedNamingStrategy implements PhysicalNamingStrategy { + + @Override + public Identifier toPhysicalCatalogName(Identifier identifier, JdbcEnvironment jdbcEnv) { + return convert(identifier); + } + + @Override + public Identifier toPhysicalColumnName(Identifier identifier, JdbcEnvironment jdbcEnv) { + return convert(identifier); + } + + @Override + public Identifier toPhysicalSchemaName(Identifier identifier, JdbcEnvironment jdbcEnv) { + return convert(identifier); + } + + @Override + public Identifier toPhysicalSequenceName(Identifier identifier, JdbcEnvironment jdbcEnv) { + return convert(identifier); + } + + @Override + public Identifier toPhysicalTableName(Identifier identifier, JdbcEnvironment jdbcEnv) { + return convert(identifier); + } + + private Identifier convert(Identifier identifier) { + if (identifier == null || StringUtils.isEmpty(identifier.getText())) { + return identifier; + } + + String regex = "([a-z])([A-Z])"; + String replacement = "$1_$2"; + String newName = identifier.getText().replaceAll(regex, replacement).toLowerCase(); + return Identifier.toIdentifier(newName); + } +} \ No newline at end of file diff --git a/simple_sns/src/main/java/com/example/sns/controller/response/UserJoinResponse.java b/simple_sns/src/main/java/com/example/sns/controller/response/UserJoinResponse.java index a1c57c1e..20cb9f16 100644 --- a/simple_sns/src/main/java/com/example/sns/controller/response/UserJoinResponse.java +++ b/simple_sns/src/main/java/com/example/sns/controller/response/UserJoinResponse.java @@ -3,7 +3,9 @@ package com.example.sns.controller.response; import com.example.sns.model.User; import com.example.sns.model.UserRole; import lombok.AllArgsConstructor; +import lombok.Getter; +@Getter @AllArgsConstructor public class UserJoinResponse { diff --git a/simple_sns/src/main/java/com/example/sns/model/entity/UserEntity.java b/simple_sns/src/main/java/com/example/sns/model/entity/UserEntity.java index a1235d7f..c0153aff 100644 --- a/simple_sns/src/main/java/com/example/sns/model/entity/UserEntity.java +++ b/simple_sns/src/main/java/com/example/sns/model/entity/UserEntity.java @@ -11,9 +11,9 @@ import java.sql.Timestamp; import java.time.Instant; @Entity -@Table(name = "\"user\"") +@Table(name = "users") @Getter @Setter -@SQLDelete(sql = "UPDATE \"user\" SET deleted_at = NOW() where id=?") +@SQLDelete(sql = "UPDATE users SET deleted_at = NOW() where id=?") @Where(clause = "deleted_at IS NULL") public class UserEntity { @@ -25,10 +25,12 @@ public class UserEntity { private String password; @Enumerated(EnumType.STRING) - private UserRole role; + private UserRole role = UserRole.USER; private Timestamp registeredAt; private Timestamp updatedAt; + + @Column(name = "deleted_at") private Timestamp deletedAt; @PrePersist diff --git a/simple_sns/src/main/resources/application.properties b/simple_sns/src/main/resources/application.properties deleted file mode 100644 index 8b137891..00000000 --- a/simple_sns/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ - diff --git a/simple_sns/src/main/resources/application.yml b/simple_sns/src/main/resources/application.yml new file mode 100644 index 00000000..c1794ed9 --- /dev/null +++ b/simple_sns/src/main/resources/application.yml @@ -0,0 +1,23 @@ + +spring: + jpa: + database: postgresql + hibernate: + naming: + physical-strategy: com.example.sns.config.ImprovedNamingStrategy + dialect: org.hibernate.dialect.PostgreSQLDialect + ddl-auto: update + properties: + hibernate: + format_sql: true + show-sql: true + + datasource: + hikari: + maximum-pool-size: 4 + url: jdbc:postgresql://ec2-44-209-24-62.compute-1.amazonaws.com/daipn3u0kdtqj + username: xckqpuxwsicvud + password: bc61f9c95d489227fe1a29eba14d2547c7185d449f081ef49f964b9d6bd1f110 + platform: postgres + driver-class-name: org.postgresql.Driver +