본문 바로가기

학습68

Domain Model vs Transaction Script 비즈니스 로직을 코드로 구현하는 2가지 방법에 대해 알아보겠습니다. 참고 문서를 번역하고 정리했어요. Domain Model 데이터와 행동을 도메인에 포함시키는 객체 모델입니다. 비즈니스 로직이 매우 복잡해질 수 있습니다. 규칙과 로직이 다양한 케이스를 표현하는데, 이러한 복잡함 속에서 객체가 동작하도록 설계됩니다. 도메인 모델은 서로 연결된 객체 웹을 만듭니다. 각 객체는 하나의 의미있는 단위가 됩니다 (책임을 가지고 특정 행동을 수행) Transaction Script 프레젠테이션 계층으로부터 전달된 하나의 요청을 처리하는 절차 안에 비즈니스 로직을 구성합니다. 예를 들어 도메인 객체에는 비즈니스 로직을 포함하지 않고, 서비스 계층에 해당 코드를 최대한 구현하는 것입니다. 대부분의 비즈니스 어플리케이.. 2021. 9. 5.
[es] 초보자가 헷갈렸던 개념 정리 최근에 Elasticsearch를 공부하고 있는데요. 하면 할 수록 헷갈리는 개념들이 많아 제가 아는 만큼 간단히 정리해보려 합니다. 틀린 부분이 있으면 바로 댓글 달아주세요! 참고로 ES에 입문하기에 해당 가이드만큼 쉬운 게 없다고 생각합니다. 저는 종민북이라 불러요 :) Elastic 가이드 북 esbook.kimjmin.net 정리 (6/3) RDB의 Database / Table / Row를 ES의 Index / Type / Document라고 대응시키곤 한다. 그런데 이는 잘못된 설명이다. ES 7 버전에선 하나의 인덱스에 하나의 타입만 설정할 수 있다(사실상 쓰지 말라고 한다). 따라서 인덱스를 하나의 테이블, 도큐먼트를 하나의 로우와 비슷하다 해도 무방하다. bool query : 복잡한 쿼.. 2021. 6. 16.
[spring] @Transactional 기초 탐구 스프링 부트로 개발을 하다 보면 트랜잭션이 필요한 부분에 @Transactional 어노테이션을 사용하게 됩니다. 그런데 어느 날 해당 어노테이션에 대해 질문을 받게 되었고 어버버 거리는 제 자신을 발견할 수 있었어요. 그래서 이 기회에 좀 더 공부하려 합니다. 사전 지식 - 트랜잭션의 정의 A database transaction symbolizes a unit of work performed within a database management system (or similar system) against a database, and treated in a coherent and reliable way independent of other transactions. A transaction general.. 2021. 6. 1.
[spring] @Controller vs @RestController 저는 회사에서 Restful API 서버만을 구현하기 때문에 아무 생각 없이 @RestController 어노테이션만을 사용해왔습니다. 그런데 어느 날, @Controller와 @RestController의 차이가 뭐냐는 질문을 받게 되었고 저는 자신있게 대답하지 못했죠. 스프링을 처음 배우던 과거에 @Controller를 사용해봤음에도 말이에요. 그래서 이번 기회에 두 어노테이션의 차이를 자세하게 알아보려 합니다. 이상한 부분이 있으면 댓글로 달아주세요. 저도 초보 개발자라 정리한 부분이 틀릴 수 있어요! 배경 - MVC 패턴과 Restful API MVC(Model-View-Controller) 구조에서 서버는 Controller로 사용자의 요청을 제어하며 Model로 DB의 데이터를 맵핑한 뒤 Vi.. 2021. 5. 25.
[JPA] Open Session In View (OSIV) 사전 개념1 - Persistence Context & Transaction - 스프링에서 엔티티 객체를 관리하는 영속성 컨텍스트는 트랜잭션과 1:1로 연결됩니다. - 즉, 트랜잭션의 범위와 영속성 컨텍스트의 생존 범위가 동일합니다. - 그래서 트랜잭션이 종료될 때 엔티티 매니저가 컨텍스트를 flush하고, 변경사항을 commit 합니다. 사전 개념2 - Lazy Loading & Proxy Intiailization - Lazy loading으로 연관 관계를 맺고 있는 객체에는, 초기화 전까지 프록시 객체가 할당되어 있습니다. - 연관 엔티티의 데이터에 접근할 때 영속성 컨텍스트에 실제 엔티티가 없다면 객체를 생성합니다 (프록시 초기화) - member.getTeam()처럼 연관 객체 자체에 접근할 때.. 2021. 5. 23.