본문 바로가기

분류 전체보기

(4)
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..
단일 책임 원칙과 클린코드 V2 해당 게시글은 과거 개인 블로그에 작성한 내용을 옮긴 내용입니다. https://tech.dpot.xyz/post/52 개발하며 다른 개발자와 협업하는 상황이 많이 온다. 서비스의 기획, 설계를 함께하면 상관없어도, 프로젝트 중간에 개발자가 참여하면 서비스의 전반적 이해를 위해 적지 않은 시간이 필요하다. 이러한 상황에서 SOLID의 S인 단일 책임 원칙에 준수하여 작성한 소스는 빛난다. 실무에서 개발하며, 느낀 단일책임원칙을 준수하기 위한 간단한 규칙을 정리해 보려 한다. 1. Setter 금지 생각해 보면 Lombok 찬양론을 말하던 개발자였다. @Data하나면 모든 것을 만들어주던 라이브러리의 문제는 생각하지도 않고 사용했던 것부터 클린코드와 이별한 듯하다. JPA와 lombok을 같이 사용할 경우..
Linode Objects Storage 구성 및 Spring Cloud aws와 연동 Akamai사에서 Linode를 인수하며, Akamai에서 AWS S3와 같은 Object Storage를 서비스하고 있다. Naver Cloud도 S3와 호환되는 저장소를 제공하고 Linode도 S3와 호환되는 Object Storage서비스를 제공한다. S3와 호환되는 저장소라면, AWS SDK로 연결이 가능할 터, 연결해 보자.. 1. Linode Object 만들어보자 1. AWS, GCP, NCP 모두 비슷한 구조를 가진 듯하다. Linode도 버킷이라는 명칭을 사용하며 생성할 수 있는 버튼이 존재하니 누르자. 2. 버킷의 명칭을 label에 적고, 리전을 골라주면 된다. 2023년 7월 기준 4개 중에서 선택가능하다. 3. 버킷을 만드려 하니, 안내문구가 나온다. 요금에 대한 설명이다. aws..
MultipartFile 업로드에 관하여 어디에서든지 파일을 다루는 시스템을 설계하고 구현할 일이 생긴다. 도메인은 다르고 파일의 형태는 다르지만, 뭔가 항상 다루는 MultipartFile. 한번 구현해 보자. 설계 필요한 기능은 다음과 같다. 단일 파일 업로드 업로드한 전체 파일 조회 업로드한 파일 제거 이번 구현에서 고려하지 않을 기능은 다음과 같다. DB 다중 파일 업로드 API controller 예제 소스에서는 서버가 실행되는 위치에 업로드한 파일을 저장할 예정이다. 단순 업로드 구현 @Slf4j @Service public class FileService { @Value("${file.upload-path}") private String uploadDirectory; public boolean saveFile(MultipartFil..