@Transactional : 선언적 트랜잭션 클래스나 메서드에 이 어노테이션이 추가되면 트랜잭션 기능이 적용된 프록시 객체가 생성 이 프록시 객체는 @Transaction 이 포함된 메소드 호출시 PlatformTransactionManager를 사용해 트랜잭션 시작 이후 commit or rollback ...
Lazy Evaluation
: 변수가 function에 접근하는 순간이 아니라 실제로 그 값이 필요할 때까지 연산을 미뤄 불필요한 연산을 피하는 방법 함수형 프로그래밍 언어의 스트림에서 주로 사용한다. 중간 연산에는 결과값이 아직 없고, 최종 연산을 접하는 순간 연산이 수행된다. 중간 연산: filter, map, flatMap, … 최...
Docker CLI
기본 CLI docker container inspect {container ID} 헬스체크 로그?같은걸 볼수있음 docker logs {container ID} sudo dockerd --debug 데몬 실행 안될때 디버깅 docker-compos...
Proxy란
프록시란? (대개) 보안상의 이유로 직접 통신을 지양하는 두 종단간 중계 기능을 하는 것 서버 입장에선 프록시가 클라이언트 역할, 클라이언트 입장에선 프록시가 서버 역할 하는 것으로 보임 캐싱 역할 요청을 기억하고 있다가, 동일한 요청이 올 때 같은 응답을 주도록 ...
Transaction 적용이 안되는 몇가지 문제
Private - 오버라이딩 문제 Transaction 처리 과정에서 프록시 객체로 등록하기 때문에 private 불가 마찬가지로 final이 적용된 메서드도 불가능 Kotlin에서 allOpen을 통해, 혹은 Open을 통해 가능 ...
In Clause
findBy~~In 의 인자로 List를 받으면 자동으로 in clause로 변경 된다. where ~~ in (1, 2, 3) && where in id=1 or id=2 or =id=3 Query와 같은 형태 그런데 여기서 ids는 고정된 크기의 객체가 아니다. ...
DB 정규화 - 1, 2, 3 정규형(NF - Normal Form)
: 함수적 종속성을 이용해 연관된 속성을 분리하고 이상 현상을 방지. 핵심은 테이블을 적절하게 나누는 것이다. 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, 6NF까지 있다고 함 비공식적으로는 3NF까지 되었으면 정규화 되었다고 한다고 함 제 1 정규형 : 중복되는 항목이 없다. 보통 아래와 같은 규칙을 적용하면...
DB Key
후보 키 튜플을 유일하게 식별할 수 있는(유일성과 최소성을 만족하는) 속성들의 부분집합 기본키가 될 수 있는 것들 기본 키 (PK) 후보키 중 뽑은 것 Null이면 안됨. (개체 무결성의 첫번째 조건) 기본키로 정의된 속에는 동일한 값이 중복되어 저장될 수 없음(개체 무결성의 두번째 조건) 무결성? 개...
함수의 메서드 (call, apply, bind)
: 함수에 존재하는 기본 메소드. 첫번째 인자로 this를 대체할 수 있어, 실행 컨텍스트(window)를 다른 것으로 바꿀 때 사용가능. 이미 할당되어있는 “다른 객체의 함수나 메소드”를 “호출하는 해당 객체에 재할당” 따라서 window를 현재의 객체를 참조하도록. MDN예시 반복해서 보기 c...
의존성 주입(Dependency injection)과 세가지 방법
스프링은 빈 컨테이너를 통해 빈 객체를 관리해준다 (IoC). 이 때, 필요한 곳에 적절히 객체를 주입해 사용해야 한다. (DI) 사실 스프링을 사용하지 않더라도, 객체 지향적 관점에서 사용되는 개념 의존성 : 어떠한 객체 A가 다른 객체 혹은 인터페이스 B를 사용할 때 A는 B에 대한 의존성이 발생하며, “A는 B에 의존한다.”...