BE(82)
-
[Spring] Filter
1. Filter란? 필터는 스프링의 독자적인 기능이 아닌 자바 서블릿에서 제공합니다. 공통적인 기능들을 서블릿이 호출되기 전후로 수행(전처리)되게 하고 싶다면 Filter를 사용하면 된다. MyFilter MyFilter com.company.hello.controller.MyFilter MyFilter /MyFilter/MyFilter : 필터링할 url public class MyFilter extends HttpFilter implements Filter { public void init(FilterConfig fConfig) throws ServletException { } class MyRequest extends HttpServletRequestWrapper { ..
2024.07.06 -
[Spring] Spring Web Application의 동작 원리
[Spring] 클라이언트의 요청이 처리되는 과정0. 출처 아직 배우고 있는 중이라 부정확한 정보가 포함되어 있을 수 있습니다! 주의하세요! 올인원 스프링 프레임워크 참고. 올인원 스프링 프레임워크 : 네이버 도서 네이버 도서 상세정보를ramen4598.tistory.com 이 글에서는 예전에 포스팅한 “[Spring] 클라이언트의 요청이 처리되는 과정”에서 다룬 Spring 프로젝트가 초기화되는 과정을 보다 깊이 알아보았다. 1. 3 layered architecture 3계층 아키텍처란? | IBM3계층 아키텍처는 애플리케이션을 프리젠테이션 계층, 애플리케이션 계층 및 데이터 계층으로 분리합니다.www.ibm.com 애플리케이션을 3개의 논리적 및 물리적 컴퓨팅 계층으로 분리하는 3 계층 아키텍처..
2024.07.06 -
[DB] SubQuery
부속 질의 (subquery) SELECT sum(saleprice)FROM orderTableWHERE custid=(SELECT custid FROM customerTable WHERE name = '박지성')부속질의란 하나의 SQL 문 안에 다른 SQL 문이 중첩된 질의를 말함. 다른 테이블에서 가져온 데이터로 현재 테이블에 있는 정보를 찾거나 가공할 때 사용함. 보통 데이터가 대량일 때 데이터를 모두 합쳐서 연산하는 조인보다 데이터만 찾아서 공급해주는 부속질의가 성능이 더 좋음. Join과 Subquery의 성능 차이는 case by case다. 데이터베이스 최적화, 인덱스 사용 여부, 쿼리 작성 방법 등 주어진 상황에 따라 다르므로 특정 상황에서는 JOIN이 더 효율적일 수 있고, 다른 상황..
2024.06.23 -
[DB] JOIN
1. JOIN 둘 이상의 테이블에서 데이터가 필요할 때 관련 있는 속성을 기준으로 복수의 테이블을 ‘관계’ 지어주는 연산. 그래서 관계형 데이터베이스의 꽃이라 부른다. 일반적으로 각 테이블의 PK 및 FK로 구성된 조인 조건을 포함하는 WHERE 절을 작성해야 한다. 가. JOIN의 종류 조인은 크게 일반적인 조인(혹은 내부 조인)과 외부 조인으로 나눌 수 있다. INNER JOINOUTER JOINLEFT OUTER JOINRIGHT OUTER JOIN 2. INNER JOIN 두 테이블 모두에서 일치하는 값을 가진 행만 반환. select e.employee_id, e.first_name, e.salary, d.department_namefrom employees e inner join depart..
2024.06.22 -
[DB] VIEW
1. View 가. View란? 데이터베이스에 존재하는 ‘가상의 테이블’ 실제 행과 열을 가지고 있지만 데이터를 저장하고 있지 않고 SQL만 저장한다. MySQL에서는 단지 다른 테이블이나 View의 데이터를 보여주는 역할만 수행한다. 복잡한 Join이나 Subquery를 View를 사용해서 단순하게 만들 수 있다. 나. 장점SELECT CustomerName, OrderIDFROM CustomersINNER JOIN Orders ON Customers.CustomerID = Orders.CustomerIDWHERE Customers.Country = 'USA';예를 들어, 다음과 같은 복잡한 쿼리를 가지고 있다고 가정해 본다. (실제로는 더 복잡하고 반복되겠죠?) CREATE VIEW USA_Order..
2024.06.22 -
[DB] INDEX
1. Index 데이터베이스(DB)의 인덱스란 데이터 검색 속도를 높이기 위해 사용하는 기술이다. 또한 특정 항목들에 대하여 중복이 발생하지 않도록 관리하기 위해서 사용되기도 한다. 하지만, 인덱스는 별도의 공간을 차지하고, 데이터가 변경될 때마다 추가적인 연산이 발생한다. 인덱스를 사용할지 말지 신중하게 따져봐야 한다. 2. Index의 종류 인덱스는 몇 가지 조건에 따라서 생성된다. PK 존재 PK 없음 Clustered index PK Unique + NOT NULL Secondary key Unique Unique show index from table_name; 테이블의 index를 조회할 수 있다. 가. Clustered index 클러스터형 인덱스 : 데이터들을 일정 기준으로 정렬하는 인덱스..
2024.04.15 -
[DB] Transaction
1. Transaction 데이터베이스의 상태를 변화시키는 일종의 작업 단위 트랙잭션 도구 설명 START TRANSACTION 트랜잭션을 시작하는 명령어 COMMIT 수정된 내용을 데이터베이스에 반영하는 명령어 ROLLBACK 트랜잭션에서 수행된 모든 변경을 원래대로 되돌리는 명령어 SAVEPOINT 롤백을 원하는 특정 시점을 지정하는 명령어 mysql은 기본적으로 autocommit으로 설정되어 있다. autocommit이면 실행과 동시에 데이터베이스에 변화를 반영한다. 끄면 commit 전까진 메모리 상에서만 데이터를 변경하고 실제 데이터베이스에선 변화하지 않는다. -- 확인 select @@autocommit; -- 1인 경우 autocommit -- 변경 set autocommit = 1; --..
2024.04.14 -
[DB] SET Operator
1. SET Operator Operator 설명 중복 UNION 합집합 제거 UNION ALL 합집합 유지 INTERSECT 교집합 없음 MINUS 차집합 없음 mysql은 UNION, UNION ALL 연산자는 제공한다. 단, MINUS, INTERSECT 연산자는 지원하지 않는다. 그래서 동일한 기능을 다른 방식으로 구현해야 한다. 2. INTERSECT 극복 select col_1 from table_1 intersect select col_2 from table_2; 동일한 기능을 mysql에서는 inner join으로 극복해야 한다. select col_1 from table_1 t1 inner join table_2 t2 on t1.col_1 = t2.col_2; 3. MINUS 극복 sel..
2024.04.14