코드를 작성하보면 여러줄의 코드를 한꺼번에 변경할 순 없을까? 싶은 순간이 많을 것이다. 이를 위해 인텔리제이에서는 여러 줄을 편집할 수 있는 기능을 제공한다. 위와 같이 다중 커서를 만드는 방법은 다음과 같다. (window / mac) Alt + Shift + 마우스 클릭 Ctrl, Ctrl(누른 상태로) + Up/Down (mac : Option) 마우스 휠을 클릭한 채 드래그 Alt + J (mac: Ctrl + G / Ctrl+Option+G) 단축키를 사용하니 아주 속 시원하다 😇 Reference 여러 줄을 편집하는 IntelliJ IDEA 방법 동일한 단어를 Multi-line으로 블록하는 방법
전체 글
엔티티에는 가급적 Setter를 사용하지 말자. Setter가 모두 열려 있다면, 변경 포인트가 많아 유지보수가 어렵다. ⭐ 모든 연관관계는 반드시 지연로딩으로 설정해라. 즉시로딩(EAGER)은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기가 어렵다. 특히 JPQL을 실행할 때 N+1 문제가 자주 발생한다. 따라서 실무에서는 모든 연관관계를 지연로딩(LAZY)으로 설정해야 한다. 연관된 엔티티를 함께 DB에서 조회해야 한다면, fetch join 또는 엔티티 그래프 기능을 사용한다. @XToOne(OneToOne, ManyToOne) 관계는 기본이 즉시로딩이므로 직접 지연로딩으로 설정해줘야 한다. (@XToMany 관계는 기본이 지연로딩이므로 설정해줄 필요 없음) @ManyToOne(fetch = Fe..
H2 데이터베이스란? H2 데이터베이스는 개발이나 테스트 용도로 가볍고 편리한 데이터 베이스이다. 웹 화면을 제공한다. H2 설치 및 실행하기 설치하기 https://www.h2database.com (최근에 나온 버전을 설치하면 일부 기능이 정상 동작하지 않을 수 있어 1.4.200버전 설치를 권장) 실행하기 (bin 폴더 위치에서) 윈도우 : h2.bat 맥 : ./h2.sh 데이터베이스 파일 생성하기 jdbc:h2:~/[파일명] (이 과정은 최초 한번만!) 파일 생성 확인 홈 디렉토리(User\사용자이름)에서 ls ~arlth /test.mv.db 파일 있는지 확인 접속하기 jdbc:h2:tcp://localhost/~/[파일명] db 파일이 생성된 것을 확인한 이후에는 tcp를 통해 네트워크 모드..
본 포스팅은 인프런 - 스프링 MVC 2편을 강의를 바탕으로 공부하고 정리한 글입니다. 📢 본 포스팅에 앞서 예제를 위한 프로젝트를 생성하자. 더보기 📌 프로젝트 생성 Project: Gradle Project Language: Java Spring Boot: 2.7.0 (정식버전 중 가장 최신 버전 선택) Project Metadata Group: hello Artifact: typeconverter Name: typeconverter Package name: hello.typeconverter Packaging: Jar Java: 11 Dependencies : Spring Web, Thymeleaf, Lombok 📌 프로젝트 실행 인텔리제이로 프로젝트를 Open하고, 동작하는지 확인한다. 기본 메인..
본 포스팅은 인프런 - 스프링 MVC 2편을 강의를 바탕으로 공부하고 정리한 글입니다. 웹 페이지가 아닌 API 예외는 어떻게 처리하는지 알아보자. API는 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려줘야하므로, 생각할 내용이 더 많다. API 예외처리 (기존 방법) 서블릿 우선 서블릿 오류 페이지 방식으로 예외처리를 해보자. 👉🏻 서블릿 오류페이지 등록 📂 WebServerCustomizer @Component public class WebServerCustomizer implements WebServerFactoryCustomizer { @Override public void customize(ConfigurableWebServerFactory factory) { Err..
본 포스팅은 인프런 - 스프링 MVC 2편을 강의를 바탕으로 공부하고 정리한 글입니다. 📢 본 포스팅에 앞서 예제를 위한 프로젝트를 생성하자. 더보기 📌 프로젝트 생성 프로젝트 선택 Project: Gradle Project Language: Java Spring Boot: 2.6.x (정식버전 중 가장 최신 버전 선택) Project Metadata Group: hello Artifact: exception Name: exception Package name: hello.exception Packaging: Jar Java: 11 Dependencies : Spring Web, Thymeleaf, Lombok, Validation 📌 프로젝트 실행 인텔리제이로 프로젝트를 Open하고, 동작하는지 확인 ..
이진 트리 이진 트리는 부모인 루트 노드와, 자식인 왼쪽 노드 + 오른쪽 노드를 가지는 것이 기본 모양이다. DFS DFS(Depth-First Search)는 깊이 우선 탐색으로, 루트 노드(혹은 다른 임의의 노드)에서 시작해 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법이다. 전위 순회 출력 (부모-왼쪽-오른쪽) : 1 - 2 - 4 - 5 - 3 - 6 - 7 중위 순회 출력 (왼쪽-부모-오른쪽) : 4 - 2 - 5 - 1 - 6 - 3 - 7 후위 순회 출력 (왼쪽-오른쪽-부모) : 4 - 5 - 2 - 6 - 7 - 3 - 1 DFS의 구현 class Node { int data; Node lt, rt; public Node(int val) { data=val; ..
본 포스팅은 인프런 - 스프링 MVC 2편을 강의를 바탕으로 공부하고 정리한 글입니다. 이전 포스팅에서 세션을 사용한 로그인 처리를 알아보았다. 하지만, 로그인을 하지 않은 사용자도 URL(http://localhost:8080/itmes)을 직접 호출할 경우 상품 관리 화면에 들어갈 수 있다는 문제가 있다. 이를 해결하기 위해서는 상품 관리 컨트롤러에서 로그인 여부를 체크하는 로직을 하나하나 작성해줄 수 있지만, 향후 로그인과 관련된 로직이 변경될 때마다 작성한 모든 로직을 수정해야 한다는 번거로움이 있다. 어플리케이션 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사(cross-cutting concern)라고 한다. 여기서는 등록, 수정 삭제, 조회 등등 여러 로직에서 공통으로 로그인 인증에 대..