자바 스트림 API 표준 API 함수적 인터페이스 사용 자바 스트림 API를 이용하면 컬렉션 List Set Map에 저장된 데이터 연산이 가능 자바 스트림 API 이용 1. 컬렉션 또는 배열에서 스트림 생성 Stream.of(names); Arrays.stream(names); 2. 중간처리 정렬, 중복제거, 필터링, skip, limit, 가공처리 map flatMap 3. 최종처리 반복처리 forEach , 합계, 평균, 최대, 최소, 갯수, 그룹핑, 타입변환 collect 컬렉션 또는 배열에서 스트림 생성 컬렉션에서 생성 List list = Arrays.asList("옥지", "빵빵이", "제니"); // 람다식 list.stream().forEach(t->System.out.println(t)..
메서드 참조 (Method Reference) 람다식을 더 간략하게 표현 객체생성 Method reference 인스턴스 메서드 호출 Method reference static 메서드 호출 Method reference System.out::printlnt Method reference 표준 API 함수적 인터페이스 Consumer : 파라미터 있고 리턴값 없는 경우 Supplier : 파라미터 없고 리턴값 있는 경우 Function : 파라미터 있고 리턴값 있는 경우 Operator : 파라미터 있고 리턴값 있는 경우 ➜ 파라미터와 리턴타입 동일 Predicate : 파라미터 있고 리턴값 있는 경우 ➜ 리턴값은 boolean Consumer 인터페이스 파라미터 있고 리턴값 없는 경우 accept(T) ..
람다 표현식 개요 하나의 메서드를 갖는 인터페이스를 상속받는 익명클래스를 함수식 형태로 선언하는 것 ( 매개변수 ) -> { 실행문; } 매개변수가 0개라면 빈괄호 반드시 명시 매개변수가 1개라면 ( ) 생략 가능 실행문장이 1개라면 { } 생략 가능 람다식의 리턴값은 return 다음에 지정 람다식의 실행문이 리턴값 하나만 있는 경우는 ()->리턴값 형태로 선언 람다식에서 지역 변수는 읽기만 가능 람다식에서 멤버 변수는 읽기/쓰기 가능 람다 표현식 익명클래스의 추상 메서드를 표현하기 위한 식 반드시 추상메서드는 하나만 존재해야 된다. 두 개 이상인 경우 람다 표현식 사용 불가 💡 @FunctionalInterface 어노테이션을 이용하여 두 개 이상의 추상 메서드가 선언되지 못하도록 강제 (defaul..
개념 정리 과목명 장 링크 데이터 모델링의 이해 데이터의 모델링 https://gangintheremark.tistory.com/202 데이터 모델과 성능 https://gangintheremark.tistory.com/203 SQL 기본 및 활용 SQL 기본 https://gangintheremark.tistory.com/209 https://gangintheremark.tistory.com/210 SQL 활용 https://gangintheremark.tistory.com/212 https://gangintheremark.tistory.com/214 SQL 최적화의 원리 https://gangintheremark.tistory.com/215 주관식(단답형) 시험문제 대비 [SQLD 시험 대비] 시험장..
옵티마이저(Optimizer) SQL의 실행 계획을 수립하고 SQL을 실행하는 데이터베이스 관리 시스템의 소프트웨어 동일한 결과가 나오는 SQL도 어떻게 실행하는냐에 따라 성능이 달라짐 옵티마이저 특징 데이터 사전(Data Dictionary)에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해 예상되는 비용 여러 개의 실행 계획 중 최저비용을 갖고 있는 계획을 선택해서 SQL 실행 옵티마이저의 필요성 건수가 많은 EMP테이블을 실행하고 찾은 행을 DEPT테이블에서 찾으면 불필요한 비교 횟수가 증가하게 된다. DEPT테이블을 머저 읽고, EMP테이블을 읽게되면 비교횟수를 줄일 수 있다. 옵티마이저는 이러한 실행 계획을 수립하는 것이며, 비효율적으로 실행 계획을 수립하면 옵티마이저에게 실행 계획을 변경..
윈도우 함수(Window Function) Partition과 Group By 구문은 의미적으로 유사 Partition 구문이 없으면 전체 집합을 하나의 Partition으로 정의한 것과 동일 윈도우 함수 적용 범위는 Partition을 넘을 수 없다 Rank 함수 Rank 함수는 ORDER BY를 포함한 쿼리문에서 특정 칼럼에 대한 순위를 구하는 함수이며 동일한 값에 대해서는 동일한 순위를 부여하며 중간 순위를 비워둔 데이터를 추출한다. 💡 1 1 ➜ 3 ➜ 4 -- 고객별 매출액과 매출순위 SELECT 고객번호, 매출액, RANK() OVER(ORDER BY 매출액 DESC) 순위 FROM ~ GROUP BY 고객번호 -- 활동점수가 높은 고객을 게임상품ID별로 선별 SELECT 게임상품ID, 순위 ..
순수 관계 연산자 순수 관계 연산자에는 SELECT PROJECT JOIN DIVISION 이 있다. 연산자 기호 표현 의미 SELECT σ σ조건(R) 릴레이션 R에서 조건을 만족하는 투플 반환 ➜ 수평연산 PROJECT π π속성리스트(R) 릴레이션 R에서 주어진 속성들의 값만으로만 구성된 투플들 반환 ➜ 수직연산 JOIN ⋈ R⋈S 공통 속성을 이용해 릴레이션 R과 S의 튜플들을 연결하여 만들어진 새로운 튜플 반환 DIVISION ÷ R÷S 릴레이션 S의 모든 튜플과 관련이 있는 릴레이션 R의 튜플들을 반환 조인(JOIN) [SQL] ANSI 조인 ANSI조인은 모든 DBMS에서 사용 가능한 조인을 의미한다. 여러 테이블을 연결하는 조인 조건을 WHERE 절에 명시하지 않고 다른 방법을 통하여 기술..
태그 컬렉션 타입 java.util.List 나 배열 java.util.Set java.util.Map java.util.Properties 컬렉션 원소가 기본타입인 경우에는 태그 이용 컬렉션 원소가 객체인 경우에 태그 이용 스프링에서 namespace를 이용해 컬렉션 타입의 프로퍼티를 설정할 때, 반드시 util 체크 필수 List 주입 순서 있고, 중복 허용 ... ... 💻 List 실습 자바코드 : List catList; Set 주입 순서 없고, 중복 불가 ... ... 💻 Set 실습 자바코드 : Set catSet; Map 주입 key/vale 쌍으로 저장 ... ... 💻 Map 실습 자바코드 : Map catMap; // 메인함수 public class UserMain { public s..
내장 함수 단일행 함수 : 문자/숫자/날짜/변환/조건 함수 다중행 함수 : 집계 함수, 그룹 함수, 윈도우 함수 [SQL] SQL 함수 개요 Oracle SQL 함수의 종류로는 단일행 함수와 그룹함수가 있다. 단일행 함수 모든 행에 대해서 각각 적용되어 행의 개수와 동일한 개수를 반환하는 함수이다. SELECT WHERE ORDER BY 절에 사용 가능하다. 그 gangintheremark.tistory.com 함수의 입력 행수에 따라 단일행 함수와 다중행 함수로 구분 단일행 함수는 SELECT WHERE ORDER BY UPDATE절에 사용 가능 1:M조인이라 하더라도 M쪽에서 출력된 행이 하나씩 단일행 함수의 입력값으로 사용되므로 사용가능 다중행 함수도 단일행 함수와 동일하게 단일 값만 반환 날짜 함..
SQL 종류 종류 설명 DDL (Data Definition Language) - 관계형 데이터베이스의 구조를 정의하는 명령어 - CREATE ALTER DROP RENAME DML (Data Manipulation Language) - 테이블에서 데이터를 입력, 수정, 삭제, 조회하는 명령어 - INSERT UPDATE DELETE SELECT DCL (Date Control Language) - 데이터베이스 사용자에게 권한을 부여하거나 회수하는 명령어 - GRANT REVOKE TRUNCATE TCL (Transcation Control Language) - 트랜잭션을 제어하는 명렁어 - COMMIT ROLLBACK SAVEPOINT DDL은 스키마, 도메인, 테이블, 뷰, 인덱스를 정의하거나 변경 ..
의존성 주입(DI, Dependency Injection) 의존성은 하나의 객체가 다른 객체의 상태에 따라 영향을 받는 것을 의미한다. 의존성과 주입을 결합해서 생각하면 '객체가 필요한 특정 객체를 외부에서 밀어 넣는다'는 의미가 된다. 즉, 어떤 객체가 필요로 하는 의존관계에 있는 다른 객체를 스프링 컨테이너가 생성하여 주입하는 것이 의존성 주입(DI)이다. 스프링에서는 ApplicationContext 가 필요한 객체들을 생성하고, 필요한 객체들을 주입하는 역할을 해준다. ApplicationContext가 관리하는 객체들을 빈(Bean)이라 하고, 빈과 빈 사이의 의존관계를 처리하는 방식으로 ① XML 설정, ② 어노테이션 설정, ③ JAVA 설정 방식을 이용할 수 있다. XML 기반 설정 방법 1..
성능 데이터모델링 데이터베이스 성능 향상을 목적으로 설계단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것 성능 데이터모델링 특징 데이터의 증가가 빠를수록 성능저하에 따른 성능 개선비용은 증가 데이터모델은 성능을 튜닝하면서 변경이 될 수 있다. 👉 변경하면서 어떠한 구조가 가장 적절한 구조인지 검토 분석/설계 단계에서 성능을 고려한 데이터모델링을 수행할 경우 성능저하에 따른 Rework 비용 최소화 성능이 저하된 결과를 대상으로 데이터모델 보다는 문제발생 시점의 SQL을 중심으로 집중하여 튜닝한다 ❌ 성능 데이터모델링 수행 절차 데이터모델링을 할 때 정규화를 정확하게 수행한다 데이터베이스 용량산정을 수행한다 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다 용량과..