본문 바로가기
반응형

학습146

git 원격 브랜치 한번에 로컬로 받아오기(+로컬 브랜치 삭제) *개요git 원격 브랜치를 모두 로컬로 받아오는 명령어를 확인합니다  모든 브랜치 한번에 pull$ git branch -r | grep -v '\->' | sed "s,\x1B\[[0-9;]*[a-zA-Z],,g" | while read remote; do git branch --track "${remote#origin/}" "$remote"; done$ git pull --all 첫번째 줄은 명령어 공부를 통해 추후 정리 예정. git pull에는 git fetch와 git merge가 합쳐져 있으므로 아래 글의 빨간박스 git fetch --all 부분은 삭제합니다.  모든 로컬 브랜치 삭제하기만약 이미 브랜치가 존재하면 무시되므로 모든 로컬 브랜치를 삭제하고 싶다면 다음 명력어 입력합니다.grep.. 2024. 1. 11.
오라클 조작 명령어 모음(테이블/코멘트/시퀀스/배치) * 테이블 --오라클 테이블 생성 CREATE TABLE emp ( empno NUMBER(4)NOT NULL, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2) ); --PK 생성 ALTER TABLE emp ADD CONSTRAINT emp_pk PRIMARY KEY (empno); --인덱스 생성 CREATE INDEX emp_idx01 ON emp(job, deptno); --칼럼 추가 ALTER TABLE TB_INVENTORY_HIS_D ADD email VARCHAR(25) DEFAULT 'test@test.com' NOT NULL.. 2023. 10. 13.
Oracle에서 NULL처리 개요 DB를 사용하다 보면 항상 NULL과의 싸움입니다. 언제 NULL 위험이 있는지, NULL의 위험이 있는 경우 어떻게 처리해야 하는지 정리합니다. (이 글에서 다루는 칼럼들은 NULL 허용입니다. 그래야 NULL 발생을 대비해 학습할 수 있습니다.) NULL이 발생하는 경우 NULL이 발생하는 경우는 크게 6가지로 구분할 수 있습니다. NULL 허용 칼럼의 값이 NULL일 때 NULL과 조인 아우터조인에서 조인에 실패한 아우터 조인된 테이블의 칼럼 값 스칼라서브쿼리에서 조건에 해당하는 데이터가 없는 경우 메인쿼리의 결과 값 GROUP BY 절 없이 사용한 집계함수에서 조건에 해당하는 데이터가 없을 때 CASE 표현식을 이용한 컬럼 변환에서 처리에 누락되는 컬럽 값 NULL이 발생하는 경우 예제 NU.. 2023. 10. 11.
제 1,2,3 정규화 개요 데이터 모델링을 하면 무의식적으로 정규화를 합니다. 이를 공식으로 정리한 내용을 배워 개념을 잘 다지기 위해 DB 정규화를 정리합니다. 정규화를 왜 해야 할까? 정규화를 무작정 외우기 전에 먼저 정규화를 왜 해야 하는지, 데이터 모델링의 핵심이 무엇인지 고민해야 합니다. DB 데이터 모델링의 핵심은 '중복을 제거' 입니다. 중복을 제거하지 않으면 이상 현상이 발생하고 데이터를 관리할 수 없습니다. 설계할 때 각 테이블의 데이터를 원자(ATOM) 상태로 모두 쪼개서 1:1, 1:M, M:N 관계를 맺습니다. 이 모든 것이 데이터 중복 현상을 방지하기 위해서입니다. 따라서, 어떻게 데이터 무결성을 지키면서 설계할 수 있을지 고민해야 합니다. 제1 정규화 모든 속성은 반드시 하나의 값을 가져야 합니다. .. 2023. 9. 1.
Value Object 패턴 개요 value object를 왜 사용하는지, spring boot에서 어떻게 사용할 수 있는지 코드를 중점으로 알아보겠습니다. 문제 상황 buy() 메서드를 사용해 물건을 판매하는 어플리케이션이 있다고 가정합니다. 물건 가격과 나의 잔고 금액 2가지를 매개변수로 가집니다. public class Customer { private void buy(Money wallet, Money cost) { // nothing to do } } 현재 Money와 Currency 클래스를 추가해야 합니다. Money 클래스는 현재 가지고 있는 금액을 가집니다 Currency는 USD, JPN, EURO와 같이 국가에서 사용되는 화폐단위를 가집니다. public class Money implements Comparabl.. 2023. 7. 7.
Entity vs Value Object 차이점 *개요 Entity와 Value Object는 DDD(Domain-Driven Design)에서 주로 사용하는 용어입니다. 데이터 모델링을 할 때 어떤 것을 Entity로 할지, Value Object로 할지 고민이 필요한데 차이점을 알아보겠습니다. 1. 동등성(equality) 관점 Reference equality(참조 동등성) 만약 2개의 객체가 메모리에 같은 주소를 참조하면 동등하다는 의미입니다 object object1 = new object(); object object2 = object1; bool areEqual = object.ReferenceEquals(object1, object2); // returns true Identifier equality(식별자 동등성) 식별자 동등성은 id.. 2023. 6. 30.
서브쿼리 의존증 서브쿼리의 문제점 서브쿼리의 성능적 문제는 결과적으로 서브쿼리가 실체적인 데이터를 저장하고 있지 않다는 점에서 기인합니다. 이에 따라서 다음과 같은 문제가 발생합니다. 연산 비용 추가 실제적인 데이터를 저장하고 있지 않다는 것은 서브쿼리에 접근할 때마다 SELECT 구문을 실행해서 데이터를 만들어야 한다는 뜻입니다. 따라서 SELECT 구문 실행에 발생하는 비용이 추가됩니다. 서브쿼리의 내용이 복잡하면 복잡할수록 이러한 실행 비용은 더 높아집니다. 데이터 I/O 비용 발생 연산 결과는 어딘가에 저장하기 위해 쌓아두어야 합니다. 메모리 용량이 충분하다면 이러한 오버헤드가 적지만, 데이터양이 큰 경우에는 DBMS가 저장소에 있는 파일에 결과를 쓸 때도 있습니다. TEMP 탈락 현상의 일종인데 저장소 성능에 .. 2023. 4. 2.
UNION을 사용한 쓸데없이 긴 표현 UNION을 사용한 조건 분기는 SQL 초보자가 좋아하는 기술 중 하나입니다. 일반적으로 WHERE 구만 조금씩 다른 여러 개의 SELECT 구문을 합쳐서 복수의 조건에 일치하는 하나의 결과 집합을 얻고 싶을 때 사용하니다. 하지만 이런 방법은 성능적인 측면에서 굉장히 큰 단점을 가지고 있습니다. 외부적으로는 하나의 SQL 실행처럼 보이지만, 내부적으로 여러개의 SELECT 구문을 실행하는 실행 계획으로 해석됩니다. 따라서 테이블에 접근하는 횟수가 많아져서 I/O 비용이 크게 늘어납니다. 따라서 SQL에서 조건 분기는 UNION을 사용해도 좋을지 신중히 검토해야 합니다. UNION의 문제점 WHERE 구에서 조건분기하기 2001년도 이하인 경우 price_tax_ex가 price이고 2001년도 이상인 .. 2023. 4. 1.
스프링 AOP (1) - 동적 프록시 개요 스프링에서 제공하는 AOP의 기능과 원리를 알아보겠습니다. 리플렉션, JDK 동적 프록시와 CGLIB 소개를 시작으로 스프링이 지원하는 프록시와 빈 후기처리를 알아보겠습니다. 리플렉션 리플렉션은 런타임에 클래스와 메서드의 메타정보를 사용해 애플리케이션을 동적으로 유연하게 만드는 기술입니다. 리플렉션은 스프링 프록시의 기본이 되는 기술이므로 개념을 알아야 합니다. 리플렉션은 런타임에 원하는 동작을 할 수 있다는 장점이 있지만 컴파일 시점의 오류를 잡을 수 없으므로 특별한 경우를 제외하고는 사용하면 안 됩니다. JDK 동적 프록시와 CGLIB 스프링에서 리플렉션 기반으로 동적 프록시를 사용하면 런타임 시 개발자를 대신하여 프록시를 생성해주고 다양한 동작을 할 수 있습니다. JDK 동적 프록시와 CGLI.. 2023. 1. 11.
반응형