일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 테이블정의서
- inmemory
- OS
- websokcet
- java
- 파스칼케이스
- 카멜케이스
- nginx
- Docker
- linux
- pdf변환
- spring
- 외부허용
- banner
- springboot
- 2중for
- redis
- 반복
- spring-rest-docs
- 태그없음
- for
- javax
- 케밥케이스
- MongoTemplate
- Entity
- 스네이크케이스
- jpa
- commons-fileupload
- mongodb
- 자바란
Archives
- Today
- Total
겸쨔
[jpa] entity camel case to snake case 변환 본문
반응형
안녕하세요.
저 예전에 했을 때는 아래처럼만 해도 스네이크 케이스로 잘 변환 됐던거 같은데,
다시 공부 하려고 해보니까 잘 안 되더라구요.
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
그새 뭐가 바꼈나봐요.
그래서 저는 PhysicalNamingStrategy를 구현하는 Strategy 클래스를 하나 만들어줬어요.
package org.hikinonymous.back.core.strategy;
import org.hibernate.boot.model.naming.Identifier;
import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
public class SnakeCaseNamingStrategy implements PhysicalNamingStrategy {
@Override
public Identifier toPhysicalCatalogName(Identifier name, JdbcEnvironment context) {
return convertToUpperSnakeCase(name);
}
@Override
public Identifier toPhysicalSchemaName(Identifier name, JdbcEnvironment context) {
return convertToUpperSnakeCase(name);
}
@Override
public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) {
return convertToUpperSnakeCase(name);
}
@Override
public Identifier toPhysicalSequenceName(Identifier name, JdbcEnvironment context) {
return convertToUpperSnakeCase(name);
}
@Override
public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) {
return convertToUpperSnakeCase(name);
}
private Identifier convertToUpperSnakeCase(Identifier name) {
if (name == null || name.getText().isEmpty()) {
return name;
}
// CamelCase -> Snake_Case
String snakeCase = name.getText().replaceAll("([a-z])([A-Z])", "$1_$2").toUpperCase();
return Identifier.toIdentifier(snakeCase);
}
}
위처럼 만들고나서 해당 클래스 경로 넣어주면 돼요 ~
physical-strategy: org.strategy.SnakeCaseNamingStrategy
반응형