목록2024/01 (10)
쌩로그
목록 포스팅 개요 본론 2-1. OSIV 2-2. 너무 엄격한 계층 요약 1. 포스팅 개요 자바 ORM 표준 JPA 프로그래밍의 13장 웹 애플리케이션과 영속성 관리를 학습하며 정리한 2번째 포스팅이다. 이번 포스팅에서 OSIV에 대해 알아본다. 참고로 이 포스팅애서 OSIV에 대해서 간단히 소개했었지만, 책에서 더 자세히 나온다. 참고로 이 글에서 이어쓰는 글이다. 2. 본론 2-1. OSIV OSIV(Open Session In View)는 영속성 컨텍스트를 뷰까지 열어둔다는 뜻이다. 영속성 컨텍스트가 살아있으면 엔티티는 영속 상태로 유지된다. 따라서 뷰에서도 지연 로딩을 사용할 수 있다. 참고 OSIV는 하이버네이트에서 사용하는 용어다. JPA에서는 OEVI(Open EntityManager In ..
목록 포스팅 개요 본론 2-1. 트랜잭션 범위의 영속성 컨텍스트 2-2. 준영속 상태와 지연 로딩 요약 1. 포스팅 개요 자바 ORM 표준 JPA 프로그래밍의 13장 웹 애플리케이션과 영속성 관리를 학습하며 정리한 첫 번째 포스팅이다. (내용이 길어져서 두 번에 걸쳐 포스팅할 예정이다.) 해당 장을 통해 컨테이너 환경에서 JPA가 동작하는 내부 동작 방식을 이해하고, 컨테이너 환경에서 웹 애플리케이션을 개발할 때 발생할 수 있는 다양한 문제점과 해결 방안을 알아본다. 2. 본론 참고로 해당 챕터에서는 yml설정을 다음과 같이 바꿔놔야 한다. spring: jpa: hibernate: ddl-auto: create properties: hibernate: # show_sql: true format_sql:..
목록 포스팅 개요 본론 2-1. Presentation Layer 테스트 요약 1. 포스팅 개요 인프런에서 박우빈님의 Practical Testing: 실용적인 테스트 가이드 강의 섹션 5 Spring & JPA 기반 테스트 중 Presentation Layer(Controller 계층) 테스트 부분을 학습하며 정리한 포스팅이다. | 참고 이전 포스팅 2. 본론 2-1. Presentation Layer 테스트 Presentation Layer 외부 세계의 요청을 가장 먼저 받는 계층이다. 파라미터에 대한 최소한의 검증을 수행한다. 우빈님은 Presentation Layer에서는 비즈니스로직보다 넘겨온 값들에 대한 Validation이 가장 중요한 거 같다고 하신다. 그래서 이를 중점으로 테스트를 작성해..
목록 포스팅 개요 본론 2-1. UUID가 왜 필요한가? 2-2. UUID가 뭔데? 2-3. 코드로 살펴보기 요약 1. 포스팅 개요 해당 포스팅은 JPA 를 사용하면서 Entity 의 Id 값으로, Auto Increment가 아닌, 랜덤 문자열을 가지는 UUID로 사용하는 내용에 대한 포스팅이다. 2. 본론 2-1. UUID가 왜 필요한가? 늘 JPA를 어떤 CRUD 연습용이던가, 혹은 프로젝트를 할 때 로컬환경에서도, 배포환경에서도 MySQL의 기본 키 전략에는 Auto Increment를 적용하여, 알아서 id값이 할당받도록 하였다. 그런데 이번에 회사에서 프로젝트를 하면서 id를 Auto Increment 로만 의존하기에는 한계가 생길 것 같아 Id 깂으로 UUID의 값을 집어넣으려 한다. 예를 ..
목록 포스팅 개요 본론 2-1. Business Layer 테스트 요약 1. 포스팅 개요 인프런에서 박우빈님의 Practical Testing: 실용적인 테스트 가이드 강의 섹션 5 Spring & JPA 기반 테스트 중 Business Layer(Service 계층) 테스트 부분을 학습하며 정리한 포스팅이다. | 참고 이전 포스팅 2. 본론 2-1. Business Layer 테스트 Persistence Layer Data Access의 역할을 한다. 비즈니스 가공로직이 포함되어서는 안 된다. Data에 대한 CRUD에만 집중한 레이어이다. Business Layer 비즈니스 로직을 구현하는 역할 Persistence Layer와의 상호작용(Data를 읽고 쓰는 행위)을 하는 비즈니스 로직을 전개시킨다..
목록 포스팅 개요 본론 2-1. 레이어드 아키텍처(Layerd Architecture)와 테스트 2-2. Persistence Layer 테스트 요약 1. 포스팅 개요 인프런에서 박우빈님의 Practical Testing: 실용적인 테스트 가이드 강의 섹션 5 Spring & JPA 기반 테스트 중 Persistence Layer(Repository 계층) 테스트 부분을 학습하며 정리한 포스팅이다. | 참고 이전 포스팅 참고로 JPA에 대한 개념과 스프링의 개념을 설명하신 부분이 있었지만 생략했고, 중간에 키워드는 적어두었다. 2. 본론 2-1. 레이어드 아키텍처(Layerd Architecture)와 테스트 Layered Architecture 관심사를 분리해서 책임을 나우고, 유지보수하기 용이하도록 ..
목록 포스팅 개요 본론 2-1. Entity 노출 하지 않기 2-2. 데이터 한 번 더 감싸기 2-3. 양방향 연관관계에 있는 두 Entity 외부에 노출시 한 쪽에서 연관관계 끊기 2-4. fetch 전략은 무적권 LAZY 2-5. 엔티티 조회 2-6. 프로퍼티는 Getter, Setter를 의미 2-7. Entity를 DTO로 변환해서 반환할 때 2-8. Hibernate 6 최적화 2-9. 컬렉션 페이징 경고 원인 2-10. 페이징 한계돌파 2-11. DTO로 뽑을 때는 new Operation을 사용한다. 2-12. OSIV 2-13. 내가 고쳐야되는 것 2-14. 내가 해봐야 하는 것 요약 1. 포스팅 개요 인프런에서 영한님의 실전! 스프링 부트와 JPA 활용 2편을 학습하고 정리한 포스팅이다...
목록 포스팅 개요 본론 2-1. 웹 서버, 웹 애플리케이션 서버 2-2. 서블릿 2-3. 동시 요청 - 멀티 쓰레드 2-4. HTML, HTTP API, CSR, SSR 2-5. 자바 백엔드 웹 기술 역사 요약 1. 포스팅 개요 인프런에서 영한님의 스프링 MVC 1편 Section 01 웹 애플리케이션 이해를 학습하며 정리한 포스팅이다. 2. 본론 2-1. 웹 서버, 웹 애플리케이션 서버 지금은 HTTP 시대라고 말할 정도로 서버간에 데이터를 주고 받을 때 대부분 HTTP 프로토콜 기반으로 동작한다. 웹 서버(Web Server) HTTP 기반으로 동작한다. 정적 리소스를 제공한다. HTML, CSS, JS, 이미지, 영상 등 NGINX 혹은 APACHE가 대표적이다. 웹 애플리케이션 서버(WAS - W..
목록 포스팅 개요 본론 2-1. 환경 변수 지정 2-2. yml에 지정 요약 1. 포스팅 개요 해당 포스팅은 스프링부트에서 yml에 환경변수를 지정하고, 출력 테스트를 진행할 때 @Value 애너테이션의 동작에 대한 간단한 개요를 정리하려고 한다. 2. 본론 스프링 시큐리티를 통해 JWT를 적용하려고 하다가. yml에서 환경변수의 값을 지정하고, 출력 테스트를 하려고 할 때 null이 출력 됨을 확인했다. 2-1. 환경 변수 지정 먼저 값을 지정하려면, 윈도우 기준으로 시작 - '환경 변수'를 검색하면 시스템 시스템 환경 변수 편집이 나온다. 거기서 환경 변수 - 시스템 변수 - 새로 만들기 를 통해서 다음과 같이 변수 이름과 값을 넣으면 된다. 리눅스로 편하게 지정하려면 다음 명령어를 사..
목록 포스팅 개요 본론 2-1. Controller 에서의 코드 수정 2-2. 도메인 모델 패턴 적용 2-3. 서비스 계층 Transaction 적용 변경 2-4. Cascade 적극 활용 요약 1. 포스팅 개요 해당 포스팅은 2023년 6월의 프로젝트에 대한 코드를 Refactoring한 과정입니다. 여행 동행 도메인에서 생성에 대한 부분을 Refactoring 한 과정입니다. 고칠 것이 많지만 일단은 생성 로직만 Refactoring 했습니다. 2. 본론 2-1. Controller 에서의 코드 수정 @Slf4j @RequiredArgsConstructor @Validated @RestController @RequestMapping("/v1/accompany") public class Accompan..