Language/Java
-
springboot 3.x + JPA + QueryDSL에서 p6spy 적용Language/Java 2024. 9. 5. 10:07
0. gradle 버전 확인필자는 1.9.2 버전을 사용할 것이다.https://mvnrepository.com/artifact/com.github.gavlyukovskiy/p6spy-spring-boot-starter/1.9.2 1. 설정1.1. build.gradle // p6spy implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.2' 2.1. application.yml jpa: database: mysql generate-ddl: false open-in-view: false hibernate: ddl-auto: none # create update none 항상 조심!! ..
-
비트마스크 적용 (QueryDSL & Hibernate 6.x)Language/Java 2024. 8. 28. 16:45
Java QueryDSL에서 비트마스크를 사용하는 이유는 여러 상태나 옵션을 효율적으로 저장하고, 이를 SQL 쿼리에서 쉽게 필터링하기 위해서이고, 비트마스크를 사용하면 여러 가지 조건을 하나의 필드로 관리할 수 있으며, 데이터베이스에서 복잡한 조건을 효율적으로 조회할 수 있다. 비트마스크 사용의 주요 이유1. 상태 관리의 효율성여러 상태나 옵션을 하나의 정수 값에 저장할 수 있다. 예를 들어, 사용자의 권한을 비트마스크로 관리하면, 권한 정보를 단일 열로 관리할 수 있다. 2. 간결한 쿼리비트마스크를 사용하면 복잡한 조건을 간단한 비트 연산으로 표현할 수 있다. 여러 개의 OR 또는 AND 조건 대신, 비트 연산자를 사용해 단순한 조건으로 필터링할 수 있다. 3. 성능 최적화비트 연산은 매우 빠르며, ..
-
SpringBoot에서 QueryDSL 설정 및 사용Language/Java 2024. 8. 16. 16:57
1. 환경 설정1.1. Gradle 설정- build.gradle...// 프로젝트에서 사용하는 전역 변수를 설정ext { set('queryDslVersion', "5.0.0")}...dependencies { ... // QueryDSL implementation "com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta" annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:ja..
-
SpringBoot에서 엑셀파일 암호화 후 내려받기Language/Java 2024. 6. 18. 17:30
개인정보가 들어간 엑셀 파일을 다운로드 하게 되면 보안 이슈가 발생 할수도 있으니 급하게 엑셀 다운로드 파일에 암호를 넣고 릴리즈 후 기록해 둔다. TestController@Tag(name = "test")@AppController(path = "/v1")@RequiredArgsConstructorpublic class TestController extends BaseController { ... @Operation(summary = "어쩌구 저쩌구 엑셀 다운로드", description = "") @GetMapping(value = "/tests/{testId}/comments/export") public ResponseEntity export(@PathVariable("testId") S..
-
Java Enum 적용Language/Java 2024. 1. 15. 11:01
레거시 코드 리팩토링을 진행하면서 상수 부분만 간단히 정리해 놓는다. 상수 public class Constants { public enum Client { GOBANG("10", "고방"), ALGO("20", "알고"), WESTAY("30", "위스테이"); private final String value; private final String text; Client(String value, String text) { this.value = value; this.text = text; } public String getValue() { return value; } public String getText() { return text; } public static Client findByValue(St..
-
문자열 날짜 포멧 변경Language/Java 2023. 4. 18. 13:05
문자열 날짜를 포멧형식을 변경해서 사용할 일이 있어서 간단하게 만들어 보았다, 어려운건 아니라서 나름의 형식에 따라 필요한 부분만 추가해 보았다. 날짜 관련 유틸 ... import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; ... public class DateUtils { ... /** * DateUtils.formatLocalDateString("20230405", "yyyyMMdd", "yy.MM.dd"); * * @param date * @param fromPattern * @param toPattern * @return */ public static String fo..
-
리엑트 및 Spring 레거시에서 파일 업로드 및 다운로드Language/Java 2023. 3. 18. 11:40
오래된 레거시 버전의 스프링(spring 3.x)으로 인하여 기존에 알던 방식으로 사용할 수 없는 부분들이 많이 생겼고, 호랑이 담배피던 시절의 기억들을 떠올리면서 작업을 진행하게 되었다. 처음에는 피그마보고 리엑트에서 퍼브리싱 및 컴포넌트 만들고 백엔드에서 기존에 공통으로 사용하는 파일업로드 넣고 디비 설계하고 넣기만 하면 될줄 알았는데.. 하루면 되겠지 했는데 꼬박 하루 반나절이나 작업한것 같다.. 맙소사!! 그래서 공통으로 파일업로드 다운로드 하는것을 만들어 놓아야 나중에 내가 편하겠다고 생각하게 되었다. 암튼 다음에도 레거시 프로젝트에서 시간을 절약하기 위해서 간단하게나마 정리해 두어야 겠다. 다음 분기에는 꼭꼭 부트로 업그레이드 합시다..!! 파일 업로드 context 설정 다시 xml에서 스프..
-
JAVA/StreamLanguage/Java 2022. 11. 29. 15:25
Map List 검색 List payCompleteList = new ArrayList(); payCompleteList.add(new HashMap() {{ put("RECEIPT_YM", "202207"); put("aaa", "aa1"); } }); payCompleteList.add(new HashMap() {{ put("RECEIPT_YM", "202210"); put("aaa", "aa2"); } }); Set receiptYearMonthSets = new HashSet(); payCompleteList.forEach(e -> receiptYearMonthSets.add(e.get("RECEIPT_YM"))); System.out.println(receiptYearMonthSets.conta..