리뷰 엔티티에서 ColumnDefault를 사용해 리뷰를 만들 때 rating을 0으로 초기화 하고자 했는데 아래와 같은 에러를 마주하였다.java.sql.SQLException: Column 'rating' cannot be null자바의 rating 값이 null 로 전달된 것이다. 왜 이렇게 되었을까?@ColumnDefault()필자가 사용한 코드는 아래와 같다. ColumnDefault에 값이 0으로 올바르게 설정되어 있다. @Column(nullable = false) @ColumnDefault("0") private Integer rating;하지만 hibernate에선 create-drop일 때만 default 쿼리를 날린다.그렇기 때문에 컬럼에 default 설정이 되지 않..
springboot
MSA 형태로 개발을 하다 보면 각각의 인텔리제이 창을 켜야 되는 번거로움이 있다. 필자도 역시 이것이 번거로워 여러 개의 창을 켜지 않을 방법을 찾다가 Gradle을 활용하는 방법을 찾았다. 필자의 폴더 구조는 아래와 같다. 우측 위에 실행 창의 orders 부분을 클릭한 후 Edit Configurations...를 클릭한다. 좌측 위 +버튼을 클릭한 후 Gradle을 클릭하면 다음과 같이 기본 항목이 생성된다. 여기서 이름을 원하는 서비스로 바꿔준다. 필자의 경우엔 discovery로 설정하였다. 이름을 바꾼 후 Run에 bootRun을 입력한다. Gradle Project 에서 우측 폴더 아이콘을 클릭해 원하는 프로젝트를 선택하고 OK 버튼을 누른다. OK 버튼을 누르면 우측 위에 실행 버튼이 활..
Matching Strategy Standard 기본값 MatchingStrategies.STANDARD Token들은 임의의 순서로 매칭될 수 있다. 모든 destination 속성 이름 토큰이 무조건 매칭되어야 한다. 모든 source 속성명에 매칭될 토큰이 하나 이상 있어야 한다. 정확하지 않은 반면에 대부분의 상황에서 이상적이다. Loose MatchingStrategies.LOOSE Token들은 임의의 순서로 매칭될 수 있다. 마지막 destination 속성 이름은 모든 토큰이 매칭되어야 한다. 마지막 source 속성 이름에는 매칭될 토큰이 하나 이상 있어야 한다. 매우 다른 속성 계층을 가진 source와 destination 개체 모델에 사용하는 것이 이상적이다. 더 높은 수준의 모호한..
메시지 전달 Message 객체를 이용하여 보내고 header에 아래와 같은 값들을 포함하여 전송 할 수 있다. KafkaHeaders.TOPIC KafkaHeaders.PARTITION_ID KafkaHeaders.MESSAGE_KEY KafkaHeaders.TIMESTAMP TOPIC: kafka에서 발행할 데이터에 대한 각각의 명세들의 이름 PARTITION_ID: 어떤 파티션 아이디에 보낼지 정할 수 있음 MESSAGE_KEY: 데이터 메세지의 키를 설정 TIMESTAMP: 데이터를 보낸 시간을 정함 폴더 구조 컨트롤러: RestAPI에서 요청을 받은 후 카프카에 토픽을 보냄 리스너: 카프카에서 데이터를 발행하면 리스너에서 구독하고 있다가 요청이 발생하면 정해진 로직을 처리함 메세지: 실제로 보낼..
출처: https://velog.io/@seungyeon/카프카-무엇이고-왜-필요할까 카프카 데이터 플랫폼의 최강자 1장을 읽고 정리한 내용입니다. 배경지식 MOM(Message Oriented Middleware) : 메시지 지향 미들웨어1.1 다른 미들웨어 종류: RPC 방식, ORB 방식1.2 미들웨어: 어플리케이션들을 연결시켜, 서로 데이터를 교환할 수 있게 해주는 소프트웨어1.3 메시지 지향: 메시지 전달을 통해 데이터를 교환할 수 있게 만들어주는 시스템. Message Broker2.1 MOM 기반으로 메시지 전송을 담당하는 시스템.2.2 Publisher(송신자)로부터 전달받은 메시지를 Subscriber(수신자)로 전달해주는 중간 역할 → 응용 소프트웨어 간에 메시지 교환 담당2.3 이때,..