전체 글 (730) 썸네일형 리스트형 [JPA] QueryDsl 여러 기능 정리 1) BooleanBuilder, BolleanExpression 사용 비슷한 용도이지만 내 생각에 두개의 용도는 다르다. BooleanExpression은 null인 경우 null을 반환해주면서, 조건에서 제외가 된다. 즉 특정 조건에 따라서 다이나믹하게 조건절이 추가되어야 하는경우, 심하면 없어도되는경우 BooleanExpression을 사용한다. BooleanBuilder는 항상 객체가 생성이 되지만 복잡한 조건절의 쿼리를 생성해야할 때 이걸 사용하게 되면, 그나마 보기 쉽고 조합을 자유롭게 해줄수있다 다만 무조건 사용해야하고 복잡한 조건절의 조합 도구라고 보면된다. 물론 두개다 때에 따라서 용도와 장점과 어긋나게 사용은 가능하지만 장단이 있으니 그에 따라 맞게 사용하면 좋을 것 같다. Boolea.. [Spring] Response 한글안깨지긔 Spring 에서 기본 필터를 제공해주거나, 빈으로 등록하는데 스프링 버전이 변경되면서 Response를 내리는 필터의 설정 방법도 조금 바뀌었다. server: servlet: context-path=/: encoding: charset: UTF-8 force: true 위 처럼 진행하면 된다.(application.yaml) [Docker] local docker-compose 파일 구성 뭐 별건없다. 배포할때는 서비스에 대한 구성을 따로 올리지만, 그게 아닐때 로컬에서 개발할때는 마리아 디비를 도커에서 구성해서 올리는데 자꾸 설정에 대한 오류, 버퍼에 대한 오류가 나서 짜증나서 로컬용 docker-compose 파일을 만든다 (디비만, 필요시 카프카나 추가예정) version: "3.2" services: database: container_name: database image: mariadb volumes: - ~/docker/mariadb/etc/mysql/conf.d:/etc/mysql/conf.d:ro - ~/docker/mariadb/var/lib/mysql:/var/lib/mysql - ~/docker/mariadb/var/log/maria:/var/log/maria envi.. [JPA] 친구 관련 API개발 추천친구 (나랑 아무런 친구 요청이 없는 것) 친구 요청(추천친구에서 친구 요청) 친구 검색(닉네임 기준 친구 검색) 친구 리스트 (본인과 친구관계인 사람) 친구 수락(친구 요청에 대한 승인) 친구 요청 내역 확인(본인 기준 친구 요청을 보낸사람) 우선 이렇게 3가지에 대한 API를 개발할 것이고, 포스팅은 한개만 예시로 할 것이다. 해당 API는 플러터에서 사용 목적으로 개발한다. 친구 controller @GetMapping("/recommand-friends") public List recommandFriends(@RequestParam("userId") String userId) { return friendService.recommendFriends(userId); } @PostMapping("/.. [JPA] QueryDsl 친구 관련 설계 친구데이터 관련 설계를 하고 있었다. 뭐가 좋을까. 고민 되었다. 특히 추천 친구라는 기능을 하나 만들고 싶었다. 우선 Entity간의 연관관계를 두기 싫었다. 그래서... 나는 이렇게 설계했다. 회원가입하면, Friends 테이블에 자기 자신도 넣어주는 것이다. 자세한건 아래 로직을 보자 1) 회원가입 로직 @PostMapping("/user") public User saveUser(@RequestBody UserDto userDto) { return userService.saveUser(userDto); } public User saveUser(UserDto userDto) { List result = userRepository.findByUserId(userDto.getUserId()); if(re.. [JPA] QueryDsl query logging 설정 해당 설정을 application.yaml에 넣어주면 된다. spring: jpa: properties: hibernate: show_sql: true format_sql: true use_sql_comments: true logging: level: org: hibernate: type: descriptor: sql: trace [QueryDsl] Spring 3.0 이상 Jdk 17 세팅 + 설계 buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '3.2.0-SNAPSHOT' id 'io.spring.dependency-management' version '1.1.2' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'com.boiler.flutterbackend' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor .. [Kafka] 토픽을 생성하는 방법들 토픽을 생성하는 상황은 크게 2가지이다. 1. 컨슈머 or 프로듀서가 카프카 브로커에 생성되지 않은 토픽에 대해 데이터를 요청할때 2. 커맨드 라인툴로 명시적으로 토픽을 생성하는 것이다. 유지보수를 위해서는 명시적으로 생성하는 것이좋지만 동시 처리량이 많아야 하는 토픽의 경우 파티션의 개수를 다르게 설정할 수 있고 단기간 데이터 처리만 필요한 경우 토픽에 들어온 데이터의 보관기간 옵션을 짧게 설정할 수 있다. 토픽의 특성별로 다르게 관리가 되어야 하기 때문에 명시적으로 생성하는 것이 좋다. broker의 옵션 중 토픽 auto topiccreate true로 주게 되면? 컨슈머나 프로듀서의 요청이 지금 없는 토픽이라면? 신규 토픽에 대해서 토픽을 생성해주는 것이다. (1번상황) 이전 1 ··· 9 10 11 12 13 14 15 ··· 92 다음