본문 바로가기

IT 공부104

Model Mapper Deep 매핑 방법?? MVC 패턴에서 컨트롤러와 뷰, 모델 사이에는 DTO라는 데이터 박스를 사용해 데이터를 한꺼번에 전달한다. 이는 컨트롤러와 서비스에서도 마찬가지인데, 이렇게 해야 웹 레이어와 서비스 내부(도메인과 레포지토리)를 개념적으로 분할할 수 있다. 그러나 서비스 내부에서는 DTO를 도메인의 VO와 같은 객체로 변환을 해야 하며, 이를 위해 Model Mapper와 같은 라이브러리가 사용된다. 그런데 Model Mapper는 객체 내부에 객체가 있는 경우엔 그것을 매핑하지 않는 것으로 보인다. 예를 들어, ReplyDTO 객체에 bno가 있다. ReplyDTO를 Reply 객체로 변환하고 싶은데, Reply에는 Board 객체가 있고, Board 객체에 bno 필드가 있다. Model Mapper는 ReplyDTO.. 2024. 1. 23.
[swagger] - 스프링부트 3.x 이상 사용 시 swagger 설정법 강의와 책에서 Swagger-UI를 사용할 때 아래와 같은 의존성을 다운받으라고 안내한다. implementation 'io.springfox:springfox-boot-starter:3.0.0' implementation 'io.springfox:springfox-swagger-ui:3.0.0' 그러나 스프링부트 3.x 버전 이상부터는 더 이상 springfox 계열의 swagger는 업데이트되지 않는다. 따라서 다른 의존성을 사용해야 한다. implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0' OpenAPI 3 Library for spring-boot Library for OpenAPI 3 with spring boot p.. 2024. 1. 22.
[JPA] - Querydsl 스프링부트3.x 설정 방법 그레이들에 위와 같이 의존성을 추가해준다. 버전은 하드코딩해도 되지만 아래처럼 사용한다. def queryDslVersion = '5.0.0' Querydsl은 어노테이션 프로세서가 엔티티(Entity) 코드를 토대로 Q도메인 클래스를 생성해주는 방식이다. 따라서 컴파일을 해야만 Q도메인 객체를 얻어 사용할 수 있다. compileJava 태스크를 수행하면 소스코드가 [build] - [classes] 디렉토리에 생성된다. 이렇게 생성시키고 나야만 비로소 Q도메인 객체를 사용할 수 있게 된다. 자신의 src 디렉토리 내에 Q도메인 객체 코드를 가져올 수도 있는데, 난 그렇게 해야 하는 이유를 잘 모르겠다. 그래서 어노테이션 프로세서에 등록하여 Q도메인 객체를 import 할 수 있는 정도로 만족하며, 이.. 2024. 1. 20.
[Log4j2] - MyBatis 데이터베이스 관련 팁 (feat. slf4j Binding) [Log4j2] - Log4j2 개념과 작동 원리 및 사용법 총 정리 1. 로깅 시스템과 Log4j2 라이브러리 로그(log)란 소프트웨어 개발 과정, 혹은 프로그램 작동 시 발생하는 이벤트에 대한 기록을 말한다. 블랙박스로 주행 중, 주차 중에서 발생하는 이벤트를 기록 linocraft.tistory.com 이전 포스팅에서 Log4j2 라이브러리는 xml 파일을 이용해 레벨(Level)을 조정하는 방식으로 로그 수준을 조절할 수 있다고 포스팅했다. 그리고 자바의 여러 단독 라이브러리들 중 꽤 많은 라이브러리들이 Log4j2를 내부적으로 사용하고 있고, 이것이 slf4j Binding 기술을 이용해 개발자가 설정한 로깅을 자동으로 따른다. 마이바티스(MyBatis) 또한 내가 설정한 Log4j2를 그대로.. 2024. 1. 20.