분류 전체보기76 [Kotlin] Sealed Class 사용하기 Sealed Class는 Enum Class와 달리 여러 서브 클래스를 가질 수 있다.상속을 지원하면서 서브 클래스를 무조건 Sealed Class와 같은 파일 내에 선언해야 하기 때문에, 관리포인트가 적다. 서브클래스는 class,data class, object 전부 사용 가능하다.이러한 특징을 활용하면 if 문으로 나열된 조건들을 깔끔하게 분리해서 관리할 수 있다. 문제 상황if (user.age 조건이 늘어날수록 로직은 복잡하고 유지보수하기 어려워진다. Sealed Class로 추상화Sealed Class로 추상화하면 다음처러 선언할 수 있다. 각 검증조건을 하나의 클래스로 분리해서 선언형으로 작성할 수 있다.자바에서 일반적인 Validation 전용 클래스랑 비슷할 수 있다.sealed cla.. 2025. 6. 24. [Kotlin] 코틀린 @ConfigurationProperties 사용하기 자바에는 Properties 클래스 하나로 다 설정했었는데 코틀린은 @Configuration과 @ConfigurationProperties을 하나의 파일에서 관리하지 못하는것으로 보임. 자바 @Configuration@ConfigurationProperties("test")public class TestProperties { public String url; private Api api;} 코틀린@ConfigurationProperties(prefix = "test")data class TestProperties @ConstructorBinding constructor( val url: String, val api: Api) {}@Configuration@EnableConfigu.. 2025. 5. 20. WebClient를 @Transactional과 사용할때 오류나면 롤백되는 이유 해당 형태롸 같은 코드 구조에서 Transaction silently rolled back because it has been marked as rollback-only 가 계속 발생하였다 @Transactional public void deleteProdcut(DeleteRequestDto serviceDto) throws ApiException { securityService.initSystemPrincipal(); Product product = getProductByBarcode(serviceDto.getBarcode()); try { asyncService.updateProductSaleToStop(product.getBarco.. 2025. 4. 8. [Java] WebClient queryParam uri 인코딩 문제 WebClient를 사용하여 Get Method를 요청할때 사용하는 QueryParam에 인코딩 문제 다음과 같은 데이터 포맷이 있을때 private static final DateTimeFormatter OUTPUT_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); public static RequsetDto of(String start) { // start = 2024-10-15 RequsetDto dto = new RequsetDto(); // Parse start and end dates LocalDate startDate = LocalDate.parse(s.. 2024. 10. 17. [DB] EntityManager Multirow Insert EntityManager를 통해서 Multirow Insert를 사용하는 두 가지 방법입니다.JPA에 다음과 같은 ID 전략을 사용할때 사용하기 좋습니다. @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; IDENTITY 전략을 사용하면, 배치인서트가 원하는대로 동작하지 않을 가능성이 큽니다.또한 Auditing이나 외래키 등 생각하지 못한 에러가 발생하는 경우도 많습니다.그래서 EntityManager를 통해 마이그레이션 한 경험을 정리합니다. 1. NativeQuery 사용하기쿼리로만 작성하게 되면, 빈값에 대한 NULL처리를 신경써줘야 합니다.또한 '이나 "같은 문자에 들어가는 특수문자도 신경써서 .. 2024. 7. 30. [DB] WITH AS 구문 사용하기 WITH AS 구문WITH 구문은 공통 테이블 식(Common Table Expression, CTE) 을 정의하는 데 사용된다.이는 임시적인 결과 집합을 정의하고, 이를 쿼리의 다른 부분에서 참조할 수 있게 해준다.WITH는 뷰(View)와 유사하지만, CTE는 임시적이며 쿼리 내에서만 사용가능하다.뷰와 달리 생성해주고 삭제해주지 않아도 된다. 단일 사용하기예를 들어, 다음과 같이 서브쿼리 결과를 WHERE 안에 사용하고 싶을때 사용한다.SELECT * FROM ITEM WHERE ID IN (SELECT ITEM_ID FROM ORDER ORDER BY CREATED_AT DESC LIMIT 200); 해당 쿼리는 서브쿼리에 limit 200이 들어가기 때문에 실행되지 않는다.그렇다고 ITEM을 C.. 2024. 7. 25. 이전 1 2 3 4 ··· 13 다음