전체 글44 복잡한 동적 쿼리 테스트하기 Querydsl로 만든 복잡한 동적 페이지네이션을 대상으로 테스트코드 만들어보기깃허브 주소목표QueryDSL로 작성한 복잡한 동적 쿼리를 테스트하기 QueryDSL 파일 : src/main/java/team7/hrbank/domain/department/CustomDepartmentRepositoryImplQueryDSL 테스트 파일 : src/test/java/team7/hrbank/unit/department/RepositoryTest참고 : 부서 페이지네이션 요구사항부서 목록 조회이름 또는 설명으로 부서 목록을 조회할 수 있습니다.{이름 또는 설명}는 부분 일치 조건입니다.조회 조건이 여러 개인 경우 모든 조건을 만족한 결과로 조회합니다.이름, 설립일로 정렬 및 페이지네이션을 구현합니다.여러 개의 .. 2025. 3. 27. List 고속복사 연산 비교 일반적으로 알고리즘 공부를 하다보면 대부분 이렇게 배웠을 것이다.ArryList는 조회에서 빠르지만, 삽입-삭제 등 내부 수정 시 성능이 떨어진다LinkedList는 조회 성능은 떨어지지만 내부 수정 시 성능이 좋다고 배웠을 것이다.이러한 특성만 놓고보면 실무에서도 LinkedList를 널리 쓰일 것처럼 보인다.❓그렇다면 왜? 실무에서는 대부분 ArrayList를 쓸까??그 이유는 바로 자바에서 제공해주는 ‘고속복사’ 기능 덕분이다.이 '고속 복사'은 기능은 ArrayList에서 엄청난 시너지 효과를 내기 때문에 대부분 ArrayList를 쓴다고 한다.ArrayList - 자바꺼 고속복사자바가 제공하는 ArrayList는 기본적으로 다음과 같은 특징을 가진다.1. 내부적으로 배열 기반으로 데이터 저장2... 2025. 3. 24. 개선된 hibernate 6.0 @EntityGraph 에 미친 영향 이전에 EntityGraph vs Fetch Join 에서, EntityGraph는 OneToMany의 데이터를 가져올 때 데이터가 뻥튀기 되는(중복) 문제가 있다고 알고 있었다. (fetch join은 내부적으로 Hibernate가 최적화 해준다고 알고 있었음)근데 과연 이게 맞을까? 에 대한 좀 더 공부하고 싶었다(미션하면서)공부하면서 추가로, 진화된 @EntityGraph의 기능을 알게되었다.결론부터 말하자면Hibernate 6.0 이상에서 @EntityGraph를 사용할 때도 OneToMany 관계에서 자동으로 중복을 제거하는 최적화가 적용된다. (fetch join만 되는줄 알았다)Hibernate 6은 내부적으로 부모 엔티티를 중복 없이 유지하도록 설계(JPA 표준에 맞게)💢 하이버네이트 6.. 2025. 3. 12. Spring에서 파일 다운로드 코드 구현하기 (다양한 리소스) 미션 : 저장한 파일을 조회해서 클라이언트가 다운로드하도록 코드 짜기 내츄럴 방법으로 파일 읽기파일을 읽고 클라이언트에 제공하려면 가장 기본적으로 Java에서 제공하는 API인 InputStream을 사용할 수 있다.Inputstream inputStream = Files.newInputStream(path)inputstream.read~~~~ InputStream을 통해 파일을 읽고, 이 데이터를 HTTP 응답으로 내려주는 방식을 기본적으로 써야한다고 생각할 수 있다 ❌ 한계하지만 InputStream을 직접 다룰 때는 몇 가지 단점이 있다리소스 관리가 까다롭다직접 열고 닫아야 해서 close() or try-with-resources 같은 방식으로 관리해줘야 한다안 그러면 메모리 누수가 발생Spri.. 2025. 3. 10. Swagger 테스트 시 - application/octet-stream is not supported 오류 발생application/octet-stream' is not supported 메시지를 남기는 상황Postman으로 테스트했을 때는 문제 없었던 상황 HTTP매핑 속성도 'MULTIPART_FORM_DATA_VALUE"로 잘 했는데 왜 서버 측에서는 설정해주지도 않은 타입인 application/octet-stream으로 인식하고 있을까??문제 원인 분석Swagger UI의 JSON 직렬화 방식 차이 Swagger UI에서는 Multipart/form-data 요청 시 버그가 있다 객체(JSON) 요청일 경우 해당 데이터의 Content-Type을 제대로 지정하지 않고 전송하는 현상. postman은 수동으로 설정이 가능해서 문제가 없었던 것 서버측에서는 이를, appli.. 2025. 3. 5. Swagger 오류 : Failed to load API definition @ControllerAdvice과 Swagger 사이에 일어난 충돌을 해결한 일기서론 : Swagger 설정 후 오류 발생Spring Boot에서 Swagger API (OpenAPI)**를 사용해 API 문서를 자동 생성하고 테스트하려고 했는데, @ControllerAdvice 와 충돌이 발생했다. 오류를 해결하기 위해 몇 시간 동안 삽질한 상황을 회고하며 글을 쓴다..발생 전 : Swagger 설정Swagger 관련 의존성 추가 implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0'이 의존성을 추가하면 /swagger-ui/index.html에서 API 문서를 확인할 수 있다.Swagger Configuration 설정@Con.. 2025. 2. 24. 이전 1 ··· 4 5 6 7 8 다음