개발 고민 3

JPA IdentifierGenerator의 connection에 대해..

본 글은 Spring Boot 2.7.13(Java 17), Hibernate 5.6.15 기준으로 작성됨 JPA에서 ID를 커스텀하게 만들 때 IdentifierGenerator, Configurable를 implements 받아서 ID생성기를 구현한다. 구글링을 하다보면, session.connection();이나 session.getJdbcConnectionAccess().obtainConnection();를 사용해서 DB connection을 가져온다. session.connection()과 session.getJdbcConnectionAccess().obtainConnection()는 뭔 차이일까? 1단계 일단, 둘 다 디버깅 걸어보자 session.connection() session.getJ..

개발 고민 2023.09.04

단일 책임 원칙과 클린코드 V2

해당 게시글은 과거 개인 블로그에 작성한 내용을 옮긴 내용입니다. https://tech.dpot.xyz/post/52 개발하며 다른 개발자와 협업하는 상황이 많이 온다. 서비스의 기획, 설계를 함께하면 상관없어도, 프로젝트 중간에 개발자가 참여하면 서비스의 전반적 이해를 위해 적지 않은 시간이 필요하다. 이러한 상황에서 SOLID의 S인 단일 책임 원칙에 준수하여 작성한 소스는 빛난다. 실무에서 개발하며, 느낀 단일책임원칙을 준수하기 위한 간단한 규칙을 정리해 보려 한다. 1. Setter 금지 생각해 보면 Lombok 찬양론을 말하던 개발자였다. @Data하나면 모든 것을 만들어주던 라이브러리의 문제는 생각하지도 않고 사용했던 것부터 클린코드와 이별한 듯하다. JPA와 lombok을 같이 사용할 경우..

개발 고민 2023.08.09

MultipartFile 업로드에 관하여

어디에서든지 파일을 다루는 시스템을 설계하고 구현할 일이 생긴다. 도메인은 다르고 파일의 형태는 다르지만, 뭔가 항상 다루는 MultipartFile. 한번 구현해 보자. 설계 필요한 기능은 다음과 같다. 단일 파일 업로드 업로드한 전체 파일 조회 업로드한 파일 제거 이번 구현에서 고려하지 않을 기능은 다음과 같다. DB 다중 파일 업로드 API controller 예제 소스에서는 서버가 실행되는 위치에 업로드한 파일을 저장할 예정이다. 단순 업로드 구현 @Slf4j @Service public class FileService { @Value("${file.upload-path}") private String uploadDirectory; public boolean saveFile(MultipartFil..

개발 고민 2023.05.30