스프링 키워드 (6) 썸네일형 리스트형 Hexagonal Architecture(헥사고날 아키텍쳐) Port :내부 도메인 로직은 포트를 통해 외부에서 분리 외부 환경과의 통신을 위한 인터페이스를 정의 서비스로 들어오는 Inbound 서비스에서 나가는 Outbound Adapter 외부환경과의 통합을 담당한다 외부환경과의 실제통신을 구현하는 부분 포트를 구현하고 내부 도메인 로직과 연결 MVC 패턴의 Controller와 비슷한 역할을 수행한다 어댑터에는 inbound/outbound로 하위 폴더가 두개 생긴다 in 외부에서 시스템으로 들어오는 요청을 처리 외부의 클라이언트와의 통신을 담당한다 out 시스템에서 외부로 나가는 요청을 처리한다 데이터베이스, 외부 서비스 등과의 상호 작용을 처리한다 ex) 회원가입을 예로 들어본다면 사용자가 가입 버튼을 누르면 in에서 가입요청이 이루어진다 > IN은 외부.. 0108 트랜잭션 v2 https://docc.tistory.com/17 1110 트랜잭션 트랜잭션이란? DB에서 수행하는 작업 단위 mysql에서는 기본적으로 sql ; 한 줄이 하나의 작업 단위로 설정되어 있음 SELECT @@AUTOCOMMIT; 로 확인 1이면 설정됨 0이면 해제됨 SET AUTOCOMMIT = FALSE; AUTOCOMMIT docc.tistory.com 초록색 글씨는 0108 스프링 트랜잭션 내용으로 추가 트랜잭션 특징 원자성 (Atomicity) -트랜잭션 내의 모든 내용이 적용되거나 하나라도 안되면 모든 내용이 적용 안 되어야한다 - 트랜잭션 내의 여러 SQL이 모두 다 실행되거나, 모두 다 실행되지 않거나 -두개의 sql이 실행될 때 @Transectional 어노테이션을 달아주면 원자성 훼손을.. JWT jwt는 JsonWebToken의 약자이고 클라이언트와 서버 간 정보를 안전하게 전달하기 위한 토큰 기반의 인증 방식이다. 인증된 사용자가 요청하는 정보를 확인하고 허용하는 데 사용된다 JWT는 세가지 부분으로 구성이 된다 Header와 Payload 그리고 Signature로 분류된다 Header는 토큰의 타입 및 해싱 알고리즘을 나타낸다 Payload는 토큰에 담기는 클레임(Claim) 정보가 포함돤다. 클레임은 토큰에 담을 정보를 의미하며, 클레임 유형에는 등록된(Claims Registered), 공개(Public), 비공개(Private) 클레임이 있다. 페이로드 부분에는 절대 민감한 정보를 담으면 안된다 Signature는 Header와 Payload를 인코딩하고, 시크릿 키(Secret Ke.. N+1 문제 참고할 블로그 https://ttl-blog.tistory.com/1135 [JPA] N+1 문제가 발생하는 여러 상황과 해결방법 🧐 N + 1 문제 N + 1 문제는 연관관계가 설정된 엔티티 사이에서 한 엔티티를 조회하였을 때, 조회된 엔티티의 개수(N 개)만큼 연관된 엔티티를 조회하기 위해 추가적인 쿼리가 발생하는 문제를 의 ttl-blog.tistory.com 1. N+1 문제란? 데이터베이스에서 일어나는 성능 문제 중 하나로, 쿼리를 실행했을 때 불필요한 반복 쿼리 호출로 인해 발생하는 문제다. 더 쉽게 말하자면 연관관계가 설정된 (1:N or N:1) Entity 사이에서 한 엔티티를 조회했을 때 조회된 Entity의 개수보다 추가적인 쿼리가 발생하는 문제를 말한다 2. N+1 문제의 문제점 데.. 인터페이스 인터페이스란 일종의 추상 클래스이다. 안에 있는 메소드들은 이름, 매개변수, 반환 유형 등의 시그니처를 정의하지만 구현 내용은 제공하지 않는다. 그래서 인터페이스를 구현한 클래스는 해당 메소드들을 반드시 구현해야 한다. 즉, 인터페이스는 구현되지 않은 메소드들의 집합으로 이루어져 있다는 뜻이다. 인터페이스에 선언된 메소드들을 모두 구현해야만 컴파일이 가능하다. 인터페이스는 코드를 추상화하고 일관된 방식으로 다양한 객체들을 다룰 수 있도록 해서 유연하고 확장이 가능한 코드를 작성하는 것에 도움을 주기 때문에 다형성을 통해 코드의 재사용성과 유지보수성을 높일 수 있다. 또한 다중 상속이 가능하여 객체 간의 다양한 관계를 형성할 수 있다. 스프링은 의존성 주입(Dependency Injection)을 통해 객.. 디스패쳐 서블릿(Dispatcher Servlet) 디스패쳐 서블릿이란 스프링 프레임워크의 핵심 부분 중 하나로, 스프링 MVC(모델-뷰-컨트롤러) 아키텍처에서 웹 요청을 받아들이고 처리하는 주요 컴포넌트이다 그럼 서블릿은 뭘까? 서블릿(Servlet)은 Java 언어를 기반으로 웹 애플리케이션을 개발하기 위한 기술 중 하나이다. 동적인 웹 페이지를 만들고, HTTP 요청을 받아들이고, 처리한 후에 HTTP 응답을 생성하여 클라이언트에게 전달할 수 있다. 주로 Java 언어로 작성되며, 웹 애플리케이션 서버 (Apache Tomcat, Jetty)에서 실행된다. 다시 돌아와서 디스패쳐 서블릿은 스프링 프레임워크에서 웹 요청을 처리하는 핵심 컴포넌트 중 하나이다. 일반적으로 웹 애플리케이션에서 클라이언트로부터 들어오는 요청을 받아 적절한 컨트롤러(Contr.. 이전 1 다음