[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] 04. MyBatis
·
공부/Spring Boot
MyBatis 란?객체 지향적으로 DB와 상호작용할 수 있는 JPA와 같은 ORM 은 아니지만,SQL 자동 매핑, 동적 쿼리, 저장 프로시저 등을 제공하는 JDBC와 JPA 사이의 프레임워크입니다.MyBatis특징1. SQL 중심 개발개발자가 직접 SQL을 작성 후 XML이나 어노테이션을 통해 Java 객체와 매핑한다.SQL을 명시적으로 작성하기 때문에, 복잡한 쿼리를 작성할 수 있다.2. Java 객체 매핑데이터베이스와 자바 객체 사이의 매핑을 자동으로 처리해준다.3. 유연성SQL의 자유도를 유지하면서, 객체 매핑과 데이터 엑세스 기능을 지원한다.4. 다양한 기능 지원동적 SQL, 캐싱, 트랜잭션 관리 등의 다양한 기능을 지원한다.구성 요소1. SqlSessionFactoryMybatis의 핵심 객체로..
08. 마무리!
·
Web/코테 준비용 서비스 만들기
동작 모습 위와같이 Github Oauth 로그인, 코드 저장 및 관리, 코드 실행, 최적화 등의 기능이 잘 동작하는 것을 확인할 수 있다.관련 정보서비스 URL : https://cotebox.site COTE BOX cotebox.siteGitHub : https://github.com/maewakka?tab=repositories후기순전히 코테를 좀 더 쉽게 준비하려고 만든 서비스이고 아마 나 혼자서 사용하게 될 것 같지만,조금이라도 MSA 형태로 구성해보고 OpenAI를 사용한 서비스를 만들어 봤다는 것에 의의를 두고 있다!
[Database] 03. QueryDSL
·
공부/Spring Boot
QueryDSL이란?앞서 JPA에 대해서 설명하였다. JPA란 Java에서 스키마를 엔티티로 매핑하여 데이터베이스를 객체 처럼 사용하게 하는 인터페이스라고 하였다.JPA같은 경우 기본적인 CRUD 같은 경우는 기존 API나 Repository를 통해서 메서드 생성만으로도 Query 질의가 가능했지만, 조금더 복잡한 쿼리를 작성하기 위해서는 JPQL 이라는 문자열 기반 쿼리를 작성해서 사용해야 했다.하지만, JPQL은 문자열 기반이기 때문에 컴파일 과정에서는 오류를 발견할 수 없으며, 결국 잘못된 JPQL은 런타임 상에서 오류를 발생한다.QueryDSL은 이러한 문제를 해결할 수 있는 도구로서, 문자열기반이 아닌 자바 코드로 타입안정성을 보장하며 쿼리를 작성할 수 있게 해주는 프레임워크다. QueryDSL..