210514 JPA repository 사용시 Optional 이슈 기본적으로 자바에 맞춰져 있으므로 Optinal로 묶여있음 Kotlin의 장점을 잘 살리려면 Nullable을 바로 체크할 수 있어야 함. Extension 사용 ...
Dirty checking
: Transaction을 commit하는 시점에 알아서 데이터베이스에 반영해주는 것 단건의 수정에 대한 쿼리를 JPA에서는 지원하지 않는데, 해당 엔티티를 변경하고, 별도로 save하지 않아도, 변경사항이 반영됨 더티체킹 과정 일단 엔티티의 최초 상태(스냅샷)를 영속성 컨텍스트에 보관해 놓는다. 트랜젝션 커밋 시 em 내부에서 ...
Plugin
all-open 플러그인 Kotlin은 기본적으로 final class 따라서 상속 불가 안정성 상승 effective java “상속에 대한 좋은 설계와 문서화를 할 자신이 없다면 상속을 허용하지 말 것.” 그러나 java에 익숙하다면 이것이 불편할 수 있음 ...
for-loop vs forEach vs map
Map vs forEach forEach 값 반환 X 각 요소에 대한 콜백을 수행. (현재 배열을 변경해서 반환). map보다 빠르다. JS에서는 for-loop가 더 빠르고, kotlin에서는 forEach(Collection의 경우)가 더 빠르다. 원래의 배열을 바꿀 염려 있음. 주로 ...
CORS(Cross-Origin Resource Sharing)
CORS란? : HTTP 헤더를 사용해 애플리케이션이 다른 origin 리소스에 접근할 수 있게, 다른 origin이 나의 resource에 함부로 접근하지 못하게 하기 위해 사용하는 메커니즘 정확하게는 CORS란, SOP(Same origin policy, 동일 출처 정책)에 의해 원래는 허용이 안되는 Cross origin 접근을 허용...
정규표현식(pattern matching)
: 문자열 검색, 치환 or 회원가입, 이력서 양식 등에 validation을 위해 이용 표준 문법 .: 임의의 한 문자.(아무거나) [] : 문자클래스 [ 와 ] 사이의 문자 중 하나를 선택 [^ ] : 문자클래스 내부를 제외한 나머지. e.g. [^a-z] : a~z를 제외한 모...
Rabbitmq와 kafka 간단 비교
공통점 메시지 큐잉 시스템. 따라서 메시지 큐의 장점을 가진다. 로그 시스템을 구축하기 위한 좋다고 한다. API 송수신과 비동기처리를 할 수 있다. 분산 처리 가능 메시지 큐의 장점 비동기 처리로 Application과 분리되어 동작한다. 일부 실패하더라도 전체에 영향이 없고, 회복이 가능하다. 작업 처리 확인...
DTO(data transfer object)에 관해서
: DTO란, 비즈니스에 종속되어있고, Layer간 데이터 전송이 목적인 일종의 자료구조 역할을 수행하는 객체 DTO가 필요한 이유 일단 필요 정도는 프로젝트 규모에 따라 다를 것 같다. 큰 프로젝트일수록 DTO가 잘 분리되어 있다면 복잡도를 줄일 수 있고 변화에 용이할 것 같다. DTO와 엔티티를 분리하는 이유: 비즈니스의 변경에 따...
세션 유지 방법 - 토큰 기반 JWT(Json Web Token)
특징 브라우저에 저장하기 때문에 서버 리소스에 부담 없다. 서버 확장성(Scalability): Scaling시에도, 서버는 Stateless하기 때문에 토큰 Verification만 수행하면 된다. 보안성: Verification을 수행하는데 Server의 비밀키가 사용된다. 확장성(Extensibility): 로그인 분야가 사...
Domain, entity, VO
Domain 내가 개발하고자하는 관심 영역 일반적으로 Entity, Repository(interface) 도메인 로직 등이 있을 수 있다. Entity 식별자를 갖는다. DB 말고도 객체지향적인 개념으로도 쓰인다. 객체지향에서의 메시지를 생각해보면, 엔티티에 관련된 로직을 포함할 수 있다. ...