[MapStruct] 03. 심화 사용법
·
공부/Java
이제 기본적인 MapStruct 사용법을 익혔으니, 좀더 심화적으로 사용할 수 있는 방법들을 소개하려 합니다. 1. 필드명 지정DTO 간의 전환에서 각 필드명이 꼭 동일하다는 보장은 없습니다. MapStruct 에서는 소스 필드와 타켓 필드를 각각 지정해 줄 수 있습니다.@Mapperpublic interface UserMapper { UserMapper INSTANCE = Mappers.getMapper(UserMapper.class); User toEntity(UserDto userDto); @Mapping(target = "id", source = "address.id") UserDto toDto(User user);} 위와 같은 식으로 source 필드와 target 필드를 각각 주입해 줄 수 있..
[MapStruct] 02. 기본 사용법
·
공부/Java
이번에는 MapStruct의 기본적인 사용버에 대해서 알아봅니다. 1. 의존성 설정dependencies { ... // lombok compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' // mapstruct implementation 'org.mapstruct:mapstruct:1.5.5.Final' // ⭐ annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final' // ⭐ // (optional)lombok - mapstruct binding implementation 'org.projectlombok:lombok..
[MapStruct] 01. MapStruct란 무엇인가?
·
공부/Java
도입 배경🧱 레이어드 아키텍쳐와 DTO 변환의 반복Spring Boot로 백엔드 개발을 하다 보면 자연스럽게 Layered Architecture를 따르게 됩니다.보통은 MVC 패턴에 따라 Controller → Service → Repository 구조로 구성되며, 각 계층 간 데이터 전달을 위해 **DTO(Data Transfer Object)**를 사용합니다.문제는, 계층을 넘나들 때마다 객체를 DTO로 변환하는 작업이 반복된다는 점입니다. 이 작업은 지루하고, 실수하기 쉬운(Human Error) 영역입니다. 필드가 많아질수록, 구조가 복잡해질수록 실수 확률은 더욱 높아집니다.더 나아가 퍼사드(Facade) 패턴을 도입하여 Controller ↔ Service 사이에 추가적인 유스케이스 계층을 ..
[Database] 01. JDBC
·
공부/Spring Boot
JDBC란?JDBC란 Java에서 데이터베이스와 상호작용하기 위한 저수준 API이며 해당 API를 통해 Java에서 여러 데이터베이스와 연결하여 SQL 쿼리를 실행하고 결과를 처리할 수 있게 해주는 표준 인터페이스 이다.JDBC 주요 특징1. 저수준 데이터베이스 접근SQL 쿼리를 직접 작성하여 실행하기 때문에, DB와 해당 DB의 SQL 언어에 대한 이해가 필요하다.2. SQL 중심 프로그래밍모든 데이터 조작은 SQL 쿼리를 통해 이루어지며, 쿼리 결과를 ResultSet으로 받아와서 개발자가 직접 Java 객체에 매핑해주어야 한다.3. 커넥션 관리JDBC는 데이터베이스 연결을 위해 Connection 객체를 사용하며, 개발자가 직접 이 연결을 직접 생성하고 닫는 등의 처리 및 관리를 해주어야 한다.(잘..
[프랙티컬 모던 자바] 02. 인터페이스
·
공부/Java
전통적으로 인터페이스는 메서드 내역을 정의하고 이를 클래스에서 구현해서 사용하는 기능이였다. 회사의 보안팀의 암호화 알고리즘 솔루션을 제공하는 예제 코드로 살펴본다.public interface CompanyEncryption { public byte[] encrypt(byte[] bytes) throws Exception; public byte[] decrypt(byte[] bytes) throws Exception;} 위의 코드에서는 인코딩을 위한 encrypt와 decrypt를 구현해서 사용해야하는 인터페이스 이다.하지만, 기존 자바에서는 여기서 다음과 같이 새로운 기능을 추가하게 되면 문제가 발생한다.public interface CompanyEncryption { ... public boolea..
04. 코드 API 서버 제작
·
Web/코테 준비용 서비스 만들기
Code-API 서비스 전체 구조 위 구조는 CodeController를 중심으로 각 구성 요소가 연결되는 방식이다. 각 구성 요소는 다음과 같은 역할을 수행한다.CodeController: 전형적인 REST API 서버의 컨트롤러 역할을 하며, 클라이언트 요청을 받아 처리한다. 클라이언트에서 전달된 코드 실행 요청을 CodeService로 전달하고, 결과를 반환한다.CodeService: 코드 실행 로직의 핵심 서비스 계층이다. 요청받은 언어에 맞게 Runner 인터페이스의 구현체를 선택하고, 적절한 컴파일러 또는 인터프리터를 호출하여 코드를 실행하도록 한다.Runner: 각 언어의 코드 실행을 위한 인터페이스로, 언어별로 다른 실행 방식을 처리할 수 있도록 한다.JavaRunnerImpl / Pyth..