본문 바로가기

카테고리388

[DB] 트리거(Trigger) 트리거(Trigger)란?**트리거(Trigger)**는 데이터베이스에서 특정 이벤트(예: INSERT, UPDATE, DELETE)가 발생할 때 자동으로 실행되는 저장 프로시저입니다. 트리거는 데이터 무결성, 비즈니스 규칙 적용, 로깅 및 감사 용도로 주로 사용됩니다.트리거의 특징:자동 실행: 사용자가 명시적으로 호출하지 않아도 특정 이벤트가 발생하면 자동으로 실행됩니다.데이터 무결성 보장: 데이터 입력, 수정, 삭제 시 조건을 검증하거나 자동으로 관련 데이터를 처리함으로써 데이터 무결성을 유지할 수 있습니다.테이블에 바인딩됨: 트리거는 특정 테이블에 바인딩되며, 해당 테이블에서 지정된 이벤트가 발생할 때만 실행됩니다.트랜잭션 내에서 실행: 트리거는 트랜잭션의 일부로 실행되므로 트랜잭션이 롤백되면 트리.. 2024. 10. 9.
자바(JAVA) - 스트림(Stream) 스트림(Stream)은 한 번 사용되거나 닫힌 후에는 재사용할 수 없다. 일회성이기 때문에 닫힌 후에 다시 사용하려고 하면 IllegalStateException이 발생된다. 따라서 스트림에서 요소를 여러 번 사용하려면, 스트림을 다시 생성하거나 요소를 컬렉션에 수집한 후 해당 컬렉션을 사용해야 한다. 스트림을 사용하기 위해서는 컬렉션 또는 배열을 먼저 만들어줘야한다. 컬렉션( List, Set, Collection ) Stream 리스트를 생성해서 Stream에 리스트의 값을 넣고, .forEach( ) 메소드를 통해 하나씩 출력해보았다. 배열 ( Array ) Stream 배열을 생성해서 Stream에 배열의 값을 넣고, .forEach( ) 메소드를 통해 하나씩 출력해보는 코드이다. Stream.f.. 2024. 2. 21.
[Oracle / SQL] EXTRACT 날짜나 시간에서 특정 필드 추출 EXTRACT 함수는 SQL에서 날짜나 시간에서 특정 필드(년, 월, 일, 시, 분 등)를 추출하는 데 사용된다. 예를 들어, EXTRACT(YEAR FROM date_column)은 날짜 열에서 연도를 추출한다. WHERE 절에 있는 TO_CHAR(START_DATE , 'YYYY-MM') = '2022-09' 문법을 EXTRACT을 사용하여 바꾸어 보았다. EXTRACT 사용 장점 가독성: EXTRACT 함수를 사용하면 코드의 가독성이 향상된다. 날짜나 시간에서 특정 필드를 추출하는 의도가 명확하게 드러나기 때문이다. 유연성: EXTRACT 함수를 사용하면 날짜나 시간에서 필요한 정보를 유연하게 추출할 수 있다. 예를 들어, 연도, 월, 일, 시, 분 등의 필드를 추출할 수 있다. 표준화: EXTRA.. 2024. 2. 20.
자바(JAVA) - 기본형(Primitive) VS 참조형(Reference) 변수의 데이터 타입을 가장 크게 기본형, 참조형으로 분류할 수 있다. 기본형 - int, long, double, boolean과 같이 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입 참조형 - People person1, int[ ] a 와 같이 데이터에 접근하기 위한 주소를 저장하는 데이터 타입 기본형 참조형 사용 바로 사용 가능 객체, 배열을 통해 메모리 상에 생성된 객체를 통해 사용 가능 연산 가능 불가능 연산 예시 ) 기본형 참조형 하지만, 참조형에서 멤버 변수에 접근한 경우에는 아래와 같이 연산을 할 수 있다. 정리해보자면, 기본형을 제외한 나머지는 모두 참조형이다. 기본형은 모두 소문자로 int, long, double, boolean이 있고, 그외 대문자로 시작하는 클래스는 모두 참조형.. 2024. 2. 16.
[JavaScript] - 동기(synchronous)와 비동기(Asynchronous) 동기(synchronous) 동기는 데이터 요청과 결과가 한자리에서동시에 일어나는 것이다. 사용자가 데이터를 서버에 요청한다면, 그 서버가 데이터 요청에 따른 응답을 다시 사용자에게 리턴해주기 전까지 사용자는 다른 활동을 할 수 없으며 기다려야한다. 즉, 한 개의 데이터 요청에 대한 서버의 응답이 이루어질 때까지 계속 대기해야만한다. 비동기(Asynchronous) 비동기는 동시에 일어나지 않는다. 서버에 데이터를 요청한 후 요청에 따른 응답을 계속 기다리지 않아도 되며 다른 외부 활동을 수행해도 되고, 서버에게 다른 요청사항을 보내도 상관없는 것이다. https://bright-landscape.tistory.com/414 [JavaScript] - 비동기(Asynchronous) async와 awai.. 2023. 12. 27.
[DB] 인덱스 B-TREE , BITMAP 개념과 차이 인덱스는 보통 사용자가 인덱스를 지정하라고 지정한 컬럼 ( KEY)와 위치주소(ROWID) 쌍으로 저장하고 관리된다. B-TREE 인덱스 실시간으로 데이터 입력과 수정이 일어나는 환경에서 많이 사용 OLTP ( Online Transaction Processing ) - 실시간 트랜잭션 처리 BITMAP 인덱스 대량의 데이터를 한꺼번에 입력하고 주로 분석이나 통계 정보를 출력할 때 많이 사용 OLAP ( Online Analytical Processing ) - 온라인 분석 처리 데이터 값의 종류가 적고, 동일한 데이터가 많을 경우 사용한다. 2023. 12. 27.
[DB] 프로시저(Procedure)와 트리거(Trigger) 차이 프로시저 절차형 SQL을 활용해 특정 기능을 수행하는 일종의 트랜잭션 언어이다. 호출을 통해 실행되어 미리 저장해 놓은 SQL 작업을 수행한다. 여러 프로그램에서 호출하여 사용 가능하고, 시스템의 일일 마감 작업, 일괄 작업 등에 주로 사용된다. 트리거 DB 시스템에서 삽입, 갱신, 삭제 등 이벤트가 발생할 때마다 자동 수행되는 절차형 SQL이다. 무결성 유지, 로그 메시지 출력 등 목적으로 사용한다. 구문에 DCL을 사용할 수 없고, DCL이 포함된 프로시저나 함수 호출도 불가능하다. 즉, Commit과 Rollback이 불가능한 것이다. 프로시저 트리거 COMMIT, ROLLBACK 실행 가능 COMMIT, ROLLBACK 실행 불가능 실행 명령어로 실행 생성 후 자동 실행 CREATE PROCEDU.. 2023. 12. 26.
[JavaScript] 호이스팅이란? 호이스팅이란? 코드가 실행하기 전 변수선언 / 함수선언이 해당 스코프의 최상단으로 끌어 올려진 것 같은 현상이다. 자바스크립트 엔진은 코드를 실행하기 전 실행 컨텍스트를 위한 과정에서 모든 선언(var, const, let, function, class)을 스코프에 등록한다. 코드 실행 전 이미 변수선언 / 함수선언이 저장되어 있기 때문에 선언문보다 참조 / 호출이 먼저 나와도 오류 없이 동작함. 즉, 변수와 함수선언은 호이스팅의 대상이며, 변수는 선언과 동시에 'undefined'로 초기화된다. 함수는 함수 전체가 끌어올려진다.단, 함수 표현식은 변수에 할당되는 부분만 호이스팅되며, 함수 전체는 끌어 올려지지 않음. console.log(x); // undefined var x = 5; foo(); /.. 2023. 12. 26.
[DB] UNDO, REDO의 차이 UNDO - 원 상태로 되돌리다. 라는 뜻을 가진다. REDO - 다시 하다. 라는 뜻을 가진다. 공통점 REDO는 기본적으로 복구의 역할을 가진다. 오라클 서버에 무슨 작업을 하든지 모두 REDO에 기록된다. UNDO는 작업 롤백과 읽기 일관성, 복구를 한다. 즉, REDO와 UNDO의 공통점으로는 복구를 한다는 것이다. 차이점 REDO - 복구할 때 사용자가 했던 작업을 그대로 다시한다. UNDO - 사용자가 했던 작업을 반대로 진행한다. 즉 사용자의 작업을 원상태로 돌린다. 2023. 12. 25.
Binary Tree (이진트리)와 Binary Search Tree(이진 탐색트리) 이진트리 (Binary Tree) 란? 모든 노드들이 둘 이하 ( 0, 1, 2 )의 자식을 가진 트리이다. 이진 탐색 트리 (Binary Search Tree) 란? 왼쪽 자식은 부모보다 작고, 오른쪽 자식은 부모보다 큰 이진 트리이다. 이진 탐색 트리는 기본적으로 이진 트리에 데이터의 대소를 비교해 왼쪽이나 오른쪽 노드에 저장한다. 탐색을 목적으로 한 자료구조이기 때문에 데이터의 중복을 허용하지 않는다. 포화 이진 트리 : 모든 리프 노드의 레벨이 동일하고, 모든 레벨이 가득 채워져 있는 트리. 트리에 데이터가 한쪽 방향으로만 저장되는 경우 탐색 속도는 O(N), 포화 이진 트리의 경우 탐색 속도는 O(logN)이다. 따라서 편향 이진 트리의 경우 탐색속도 저하와 공간 낭비를 불러올 수 있다. 2023. 12. 25.
[DB] MyBatis와 JPA의 차이와 장점, 단점 MyBatis와 JPA의 주요한 차이점은 DB의 상호작용 방식이다. MyBatis - 개발자가 SQL 쿼리를 직접 작성하며 데이터 매핑을 위해 XML 또는 어노테이션을 사용한다. 장점 접근이 쉽고 코드가 간결하다 ( 배우기가 쉬움 ) SQL문과 프로그래밍 코드가 분리되어 있어 SQL 문에 변경이 있을 시 자바 코드를 수정하거나 컴파일 안해도 됨. 다양한 프로그래밍 언어로 구현이 가능 ( 이식성 높음 ) 직접 작성한 SQL에 의존하기 때문에, 성능 최적화가 상대적으로 쉽다. 단점 스키마 변경시 SQL 쿼리를 직접 수정해주어야 한다. 반복된 쿼리가 발생하여 반복 작업이 있다. 쿼리를 직접 작성하기 때문에 데이터베이스에 종속된 쿼리문이 발생할 수 있다. JPA - 객체와 관계형 데이터베이스 간의 매핑을 제공하.. 2023. 12. 24.
[DB] ORM 이란? ORM을 이해하기전에 먼저 영속성에 대해 알아야한다. 영속성이란? Persistence로, 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성이다. 영속성을 갖지 않는 데이터는 메모리상에서만 존재하기 때문에, 프로그램을 종료하면 모두 잃어버리게 된다. 따라서, 이 메모리상의 데이터를 파일시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용해 영구적으로 저장하여 영속성을 부여할 수 있다. ORM ( Object-Relational Mapping )이란? 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것 장점 첫번 째, 객체 지향적인 코드로 인해 더 직관적이고, 비즈니스 로직에 더 집중할 수 있게 도와준다. ORM을 이용하면 SQL 쿼리가 아닌 직관적인 코드로 데이터를 조.. 2023. 12. 24.