반응형 분류 전체보기46 Spring Data JPA - 데이터 뻥튀기 (일대다 관계 조인) "N + 1 문제 ②편"에서 N + 1 문제 해결 방법으로 Fetch Join을 사용해야 한다고 정리했었는데요. 정리를 하면서 "컬렉션 페치 조인, 일대다 관계인 @OneToMany로 연관관계를 가지는 Entity를 조회할 때 데이터 뻥튀기가 일어난다."라고 말씀드렸습니다. 그래서 오늘은 fetch join에 대해 자세히 알아보고 데이터 뻥튀기를 해결해보도록 하겠습니다. 먼저 페치 조인의 특징, 일반 조인과의 차이점을 알아보고, [일대다 관계 조인, 컬렉션 페치 조인]에 대해서 알아보도록 하겠습니다. 페치 조인의 특징 SQL 조인 종류 X JPQL에서 성능 최적화를 위해 제공하는 기능 연관된 엔티티나 컬렉션을 SQL 한 번에 함께 조회하는 기능 일반 조인과의 차이점 일반 조인 실행 시 연관된 엔티티를 함.. 2022. 3. 7. Thymeleaf - Ajax Response 값 활용하여 View 갱신하기 타임리프가 자바 진영의 서버 사이드 템플릿인 만큼 타임리프를 사용하면 필수적으로 HTML, CSS, JavaScript, jQuery 등과 같은 기술도 같이 사용해야 합니다. 그래서 다른 전문적인 프론트 개발자분들처럼은 못해도 뷰단을 코딩할 때도 최대한 컨벤션을 지키거나 유지 보수하기에 용이하도록 깔끔하게 코드를 짜려고 노력하는 편입니다. 다만, Ajax를 사용하여 웹 페이지 일부분을 렌더링하고자 할 때 유지보수는 꿈꿀 수 없을 정도로 더럽게 코드를 짜고 있는 제 모습을 볼 수 있었습니다. 그래서 코드를 깔끔하게 짜고자 모듈화를 한 경험에 대해 정리해볼까 합니다. 프로젝트 버전은 다음과 같습니다. 개발 도구: IntelliJ Spring Boot: 2.5.10 Java 11 Thymeleaf Spring.. 2022. 3. 4. Real MySQL 8.0 Vol.1 - 시스템 변수 MySQL 시스템 변수의 특징 MySQL 서버는 기동 하면서 설정 파일의 내용을 읽어 메모리나 작동 방식을 초기화하고, 접속된 사용자(Session)를 제어하기 위해 이러한 값을 별도로 저장해 둡니다. 시스템 변수는 적용 범위에 따라 글로벌 변수와 세션 변수로 나뉩니다. 변수의 'Var Scope'는 Global, Session, Both(글로벌, 세션 동시)가 있습니다. 글로벌 변수 - 하나의 MySQL 서버 인스턴스에서 전체적으로 영향을 미치는 시스템 변수를 의미 - 대체로 MySQL 서버 자체에 관련된 설정 - 대표적으로 InnoDB 버퍼 풀 크기(innodb_buffer_pool_size) 또는 MyISAM의 키 캐시 크기(key_buffer_size) 세션 변수 - MySQL 클라이언트가 MyS.. 2022. 3. 2. Thymeleaf 사용 시 onclick 함수에 매개변수 넘기기 간단하게 스프링 프로젝트를 만들어주시고, Spring Web, Thymeleaf 라이브러리를 넣어주세요. Controller에서 Model에 샘플 객체 담아서 index.html을 렌더링하도록 했습니다. HomeController @Controller public class HomeController { @GetMapping("/") public String index(Model model) { Member member = new Member("wangtak@gmail.com", "왕탁이", 26); model.addAttribute("member", member); return "index"; } public static class Member { private String email; private .. 2022. 2. 26. 나를 위한 Thymeleaf 특징 정리 현재 업무에서 Vue.js, React와 같은 자바스크립트 라이브러리를 사용하여 웹을 구성하는 CSR 방식이 아닌 Thymeleaf를 사용한 SSR 방식의 웹 애플리케이션을 개발중입니다. Thymeleaf를 사용해보면 확실히 jsp 보다는 spring과 찰떡궁합인 것을 느끼게 되고 편리한 기능이 많아서 좋은 거 같습니다. 다만 기능이 많기에 모든 기능과 attribute를 외우는 것은 힘들기 때문에 (feat. 기억보단 기록을) 사용하면서 유용했던 기능이나, 근본적인 Thymeleaf의 특징을 앞으로 차차 정리해볼까 합니다. 이번 포스트에서는 영한님의 Spring MVC 2편에서 Thymeleaf의 특징을 잘 정리해주셔서 MVC 2편 강의를 토대로 제 입맛에 맞게 다시 정리해보려고 합니다. 특징 - 서버.. 2022. 2. 25. Spring Security - Nginx LB + 세션 클러스터링(Session Clustering) ③ ③ 편을 정리하기 앞서 ①, ② 편에 대해서 정리를 하고 진행하도록 하겠습니다. 1. ①, ② 편의 목적은 Nginx의 LB 기능을 이용하여 무중단 배포를 하려고 함입니다. 1-1. ① 편에서는 Session Clustering을 위해 스프링의 Session을 위부 Redis로 이관하였습니다. 1-2. ② 편에서는 로컬에서 개발한 ① 편의 스프링을 개발 서버의 스펙에 맞게 수정과 추가를 하였습니다. 2. 그럼 여기서 무중단 배포를 하려고 하는데 왜 갑자기 Session Clustering이지?라고 생각할 수 있습니다. 혹은 그냥 Nginx conf 파일 설정해서 port 다르게, LB 사용해서 애플리케이션 2개 띄우면 되는 거 아니야?라고 생각할 수도 있습니다. 3. 그러나 제가 프로젝트에서 사용한 인증.. 2022. 2. 21. 이전 1 2 3 4 5 6 7 8 다음 반응형