Programming-[Backend] (417) 썸네일형 리스트형 [TIL] Soft Delete hibernate, @SQLRestriction 배경JPA에서 Soft delete 방식을 적용하기 위해 전체 엔티티의 상위 엔티티에 deleted_at 컬럼을 적용하고 상속받는 구조로 만든다. 그러나 이렇게 처리했을 때, 모든 엔티티들을 처리하는 쿼리문에서 deleted_at을 신경써줘야한다는 문제점이 발생한다.@Getter@Setter@MappedSuperclass@SuperBuilder@NoArgsConstructor@AllArgsConstructor@Audited@EntityListeners(AuditingEntityListener.class)public abstract class BaseEntityAbstract implements Serializable { @NotAudited @Column(name = "deleted_at") .. Querydsl MultiDataSource 설정 시 유의사항 1. DataSource 설정 방법JPA로 여러 데이터베이스를 참조해야하는 경우, JPA에서 바라보는 데이터베이스를 설정해주는 값, 그에 맞는 트랜잭션 매니저, 엔티티 매니저 설정을 아래처럼 설정해줘야한다. 예를 들어 Abc, Def 도메인에 대해 설정하는 경우 아래처럼 설정한다. @Configuration@EnableTransactionManagement@EnableJpaRepositories( basePackages = "com.project.domain.abc", entityManagerFactoryRef = "abcEntityManagerFactory", transactionManagerRef = "abcTransactionManager")public class AbcDataSou.. keycloak service account 설정 방법(ver 26.2.1~) service account service account 방식은 client가 token을 갖고 resource server에 요청하는 방식이 아니라, resource server간 자원을 요청하기 위한 통신을 목적을 갖는다. 이때 keycloak 설정에 대해서 간략히 기록해둔다. keycloak public client 설정보통 아래 그림과 같은 구조로 클라이언트 - 서버 구조를 만들어두고 keycloak을 이용하여 인증한다. resource server를 keycloak client로 등록할 때, public client로 standard flow만 체크하여 OAuth 2.1의 authentication flow가 적용되도록 한다. Service Account 설정: Credential Clien.. [작성중] Enum 사용: @Converter 적용하기 배경Enum을 사용하면 규격화된 스펙으로 특정 속성값들을 편리하게 처리할 수 있다. 클래스처럼 사용할 수도 있어서 내부에 관련된 값과 메서드들을 선언하여 캡슐화하여 코드를 관리할 수도 있다. public enum UploadStatus { PROCESSING, DONE, FAIL public static UploadStatus from(...) { return ... }} 만약 mysql을 사용한다면 DB에서 enum 타입 자체를 지원하지는 않기 때문에 다음과 같이 Entity에 해당 타입을 선언하면서 @Enumerated를 선언해준다. 그러면 내부적으로는 Enum을 통해 규격화되고, 통일성 있는 타입으로 사용할 수 있으면서도 DB에는 String으로 처리되어 들어.. [TIL] 양방향 연관관계 복습 + Instancio + cascade 객체지향적으로 JPA를 사용하기 위해 필요하다. 역방향 조회 시 절차지향적으로 코딩하는 것을 안하기 위함이다.-> 양방향 연관관계가 없다면, TeamRepository.find -> MemberRepository.find를 통해 Team에 속한 Member 들을 찾아야하는데, Team 엔티티 내부에 List members를 두고 양방향 연관관계를 맺어두었다면, 엔티티 탐색처럼 team.getMembers()로 멤버 조회 가능-> 양방향 관계를 만들면 @toString, @JsonBackRefrence 등을 처리해줘야하는 번거로움은 있다. 다만 이 내용은 역참조를 할 때의 편리성과 상충되는 것이다. 역참조를 한 번 만들어두면, 사용자들은 편하게 사용할 수 있다. 단방향이라면 각 Repository를 의존해.. Count, 동시성 제어 관리(Lock, Redis, Kafka): 선착순 이벤트 시스템 인프런의 실습으로 배우는 선착순 이벤트 시스템 강의를 듣고나서 정리하는 내용이다. 동시에 많은 사용자가 몰려서 서버에 요청을 보냈을 때, 쿠폰 등 개수에 대한 정합성을 어떻게 확보할 것인지 알아본다. 그리고 DB에 부하가 되지 않게 할려면 어떻게 해야하는지 알아본다. 강의에서는 선착순으로 쿠폰을 발급하는 이벤트를 개최하는 상황을 예시로 든다. 요구사항은 아래와 같다.1. 쿠폰은 선착순 100명에게만 발행된다.2. 순간적으로 몰리는 트래픽을 견딜 수 있어야한다. Lock1번 요구사항을 달성하기 위해 가장 간단하게 적용할 수 있는 방법은 Lock이다. 아무런 추가 인프라 없이 JPA의 @Lock 어노테이션을 이용하여 Pessimistic Lock을 걸면 된다. 이 방법은 한 스레드가 접속하여 DB를 업데이.. keycloak용 백엔드 서버: 다중 약관 동의 설계 배경백엔드 서버는 keycloak을 보조하기 위한 역할로 존재. 기본적으로 keycloak은 인증만 목적으로하는 모듈임CIBA(Client Initiated Backchannel Authentication) 등 중간 서버가 있어야하는 인증 방식이 필요한 경우다중 약관 동의, 서비스별 추가 데이터 등이 필요한 경우 다중 약관 동의 항목 설계 필요성keycloak에서는 기본적으로 단일 약관 내용만 제공하고, 동의 여부도 timestamp를 기록하기 위한 update 방식을 채택하므로 요구사항을 충족하기에는 어려움이 있음. 개별로 SPI, entity 등을 개발하여 keycloak에 적용하는 경우 keycloak version up 대응 시 위험 요소로 작용할 수 있음 따라서 백엔드 서버에서 약관 동의 항목용.. keycloak v26.1.2 image build issue( w/ Docker engine 28.x.x) 배경keycloak을 26.0.1 버전을 사용하다가, 26.1.2 버전으로 업그레이드 하면서 Docker image build 관련 이슈가 발생했다. 아래 코드처럼 Dockerfile을 작성하였는데 이미지 빌드까지는 잘 되는데 Runtime에 에러가 발생했다. Dockerfile 예시ARG AWS_ECR_REPOSITORY_FE_URIFROM ${AWS_ECR_REPOSITORY_FE_URI}:latest AS baseFROM quay.io/keycloak/keycloak:26.2.1 AS builderWORKDIR /opt/keycloakENV KC_HEALTH_ENABLED=${KC_HEALTH_ENABLED:-true} \ KC_METRICS_ENABLED=${KC_METRICS_ENABLE.. 이전 1 2 3 4 ··· 53 다음