분류 전체보기

[Spring Boot 3.2 마이그레이션] hibernate @Type, @TypeDef deprecated
개요 postgresql 에서 jsonb 타입으로 데이터를 저장하고 있었다. spring boot 2.7.6 버전을 사용중이었고 spring boot 3.2.3 로 버전업을 하게 되면서 @Type, @TypeDef 가 deprecated 되었다. 해결 @JdbcTypeCode(SqlTypes.JSON) 또는 AttributeConverter 를 새로 만들어주면 된다는데 postgresql 에서는 dependency 만 새로 바꿔주면 된다! https://github.com/vladmihalcea/hypersistence-utils GitHub - vladmihalcea/hypersistence-utils: The Hypersistence Utils library (previously known as Hi..

[SpringDataJPA] @Modifying 과 @Query 의 관계와 동작방식 (@Query 없이 @Modifying 만 사용한다면 어떻게 될까?)
1. @Modifying 이란? @Modifying 어노테이션은 @Query 어노테이션으로 작성된 수정, 삭제 쿼리 메소드를 사용할 때 필요하다. 즉, 조회 쿼리를 제외하고 데이터에 변경이 일어나는 INSERT, UPDATE, DELETE 쿼리에서 사용한다. @Modifying 어노테이션은 @Query 와 같이 사용되며 벌크 연산을 하고 싶을 때 사용한다. ex. 나이가 20살인 모든 회원의 주류 구매 가능 여부 업데이트 UPDATE SET isAvailiablePurchase WHERE age >= 20; @Modifying 의 내부 옵션을 보면 flushAutomatically() 와 clearAutomatically() 가 존재하는 것을 알 수 있다. (참고: https://docs.spring.i..

[SpringCache] 쪼금의 개념 설명과 Caffeine maximumSize 옵션 테스트
DB I/O 트래픽을 고려해야하는 api 개발을 진행하게되었다. 1. 조회는 빈번하지만 2. 업데이트는 빈번하지 않은 조건을 가지고 있었기 때문에 스프링캐시가 적합하다고 생각되어 적용해서 개발하게되었다. 해당 포스팅은 개발을 진행하면서 로컬 캐시인 카페인 캐시의 특정 옵션에 대한 여러가지 테스트를 기록하기위해 작성했다. 1. 스프링캐시가 뭔데? 캐시 처리중에서는 Redis, Memcached 등 추가적인 memoryDB 를 이용하거나 application 레벨에서 사용가능한 EhCache 등이 사용되는데 이 중 application 레벨에서 사용가능한 캐시를 말한다. 스프링 캐시는 스프링의 특징처럼 Cache 기능의 추상화를 지원하고, EhCache, Couchbase, Redis 등의 추가적인 캐시 저..
[java] cannot access class com.sun.crypto.provider.SunJCE
문제자바11 자바17 버전업을 진행하니 사용하고 있던 나이스아이디 모듈에서 SunJCE 모듈에 접근할 수 없다는 다음과 같은 에러가 발생했다.cannot access class com.sun.crypto.provider.SunJCE (in module java.base) because module java.base does not export com.sun.crypto.provider to unnamed module @0x4562e04djava.lang.IllegalAccessError: class NiceID.Check.CPClient (in unnamed module @0x4562e04d) cannot access class com.sun.crypto.provider.SunJCE (in module ..

생성자보다 정적 팩터리 메서드를 고려해보자
최근 NEXTSTEP 에서 주관하는 TDD, 클린코드 with Kotlin 5기 과정을 들으면서 어떻게 인스 턴스를 생성할지의 대한 고민을 많이 했다. 리뷰어들 마다의 생각도 다르고 각각의 상황도 달라 최대한 다양한 방법을 사용해보려고 노력했던 것 같다 😊 생성자 대신 팩토리 함수를 사용하라 생성자의 주된 임무는 제공된 인자를 사용해서 캡슐화된 프로퍼티를 초기화하는 것이다. 메서드의 수가 많을 수록 단일 책임 원칙 (SRP) 을 위반하지만 생성자의 수가 많아질 수록 클라이언트가 클래스를 더 유연하게 사용할 수 있다. 인스턴스를 만드는 방법중에는 팩토리 함수를 사용하는 방법도 존재한다. 이펙티브 코틀린, 이펙티브 자바에서는 생성자 대신 팩토리 함수를 사용하라 라고 말하고 있다. 관련해서 책에서 말하고 있는..

[strapi] 🚀 강력한 headless 프레임워크 strapi 사용해보기 [3/3]
https://bin-repository.tistory.com/157 [nodejs/strapi] 🚀 엔티티를 생성해보자 - 2 🚗 이전 포스팅 가기 https://bin-repository.tistory.com/156 [nodejs/strapi] 🚀 strapi 설치 및 mysql 연동하기 - 1 https://strapi.io/documentation/developer-docs/latest/getting-started/quick-start.html.. bin-repository.tistory.com 전 포스팅에서 엔티티를 생성해 보았는데 정말 코드를 단 한자도 치지않고 테이블을 생성하고 어드민 패널에 연동까지 해주었다. 지금부터는 잘 닦여진 도로를 달리기만 하면 된다. 🚗 #1. strapi docu..