본문 바로가기

전체 글115

[Model Mapper] - DTO와 Entity 변환 시 내부에 객체를 매핑하고 싶을 때 Model Mapper Deep 매핑 방법?? MVC 패턴에서 컨트롤러와 뷰, 모델 사이에는 DTO라는 데이터 박스를 사용해 데이터를 한꺼번에 전달한다. 이는 컨트롤러와 서비스에서도 마찬가지인데, 이렇게 해야 웹 레이어와 서비스 내부(도 linocraft.tistory.com 전에 품었던 의문을 해결했다. 결론적으로 Model Mapper는 내부의 객체까지 전부 자동으로 매핑해준다. 그러나 여기에는 두 가지 조건이 있는 것으로 확인했다. ( ※ Entity 클래스에는 절대 setter를 쓰지 않아야 한다. setter를 쓰지 않아도 잘 동작하며, 논리적으로도 엔티티는 DB에서 가져온 시점에서 불변이어야 앞뒤가 맞다. service 단에서 엔티티의 내부 값을 setter를 통해 자유롭게 변동하는 것을 허용.. 2024. 1. 29.
[스프링] - redirectAttribute.addFlashAttribute() 동작 원리 (feat. 쿠키와 세션) 1. addFlashAttirbute()의 특이한 점 스프링에서 아래와 같은 addFlashAttribute() 코드를 통해 일시적으로 데이터를 전달할 수 있다. @GetMapping("/register") public void register() { } @PostMapping("/register") public void register(@Valid RegisterDTO registerDTO, BindingResult bindingResult, RedirectAttribute redirectAttribute) { if ( bindingResult.hasErrors ) { redirectAttribute.addFlashAttribute("errors", bindingResult.getAllErrors()).. 2024. 1. 26.
[그레이들] - 스프링 웹 프로젝트의 구조와 빌드 1. 그레이들 프로젝트 구조 서버측 자바 웹 애플리케이션은 그레이들(Gradle)이나 메이븐(maven)과 같은 빌드툴(Build Tool) 프로그램을 사용해서 프로젝트를 관리한다. 물론 이렇게 사용하지 않고 이클립스나 인텔리제이가 제공하는 기본 프로젝트 템플릿 구조에 일일이 폴더를 만들고, 라이브러리를 다운받고, 패키징을 할 수도 있다. 그러나 이 과정이 매우 번거롭기 때문에 실무에서는 그냥 그레이들이나 메이븐을 사용한다. 내가 빌드툴을 잘 사용하는 것은 아니라 자세히는 모르지만, 프로젝트 빌드라는 것은 소스코드와 각종 파일 자원을 가지고 실제 활용 가능한 프로그램을 생성하는 일을 일컫는다. 자바 웹 프로젝트의 경우 war 파일을 만드는 것이다. (혹은 스프링부트처럼 웹 서버가 내장된 경우 jar 파일.. 2024. 1. 25.
[피드백] - 실제 서비스가 아니라 서비스화부터 신경쓰자 1. 라는 책을 흥미롭게 읽은 기억이 있다. 이 책의 초반에는 개발자의 등급을(?) 분류하는 기준이 저자(우쥔)에 의해 제공되어 있다. 저자는 자연어 처리 전문가로 구글에서 일하면서 겪은 개발자들을 다음과 같은 기준으로 분류할 수 있다고 한다. 5등급 : 독립적으로 문제를 해결하고 소프트웨어를 온전히 완성할 수 있다. 4등급 : 최신식 방법으로 문제를 해결하고, 다른 사람들을 이끌어 영향력 있는 개발자로 성장시킬 수 있다. 3등급 : 독립적으로 제품을 설계하고 시장에서 성공할 수 있다. 2등급 : 중요한 컴퓨터 이론과 실천에 있어 새로운 문제를 제기할 수 있다. 1등급 : 산업을 개척하고 이론적 기반을 만들 수 있다. 참고로 저자가 생각하는 7등급의 기준은 우수한 대학의 컴퓨터 공학과를 전공한 수준이다... 2024. 1. 25.