본문 바로가기

STUDY/TIL

(27)
JPA | DynamicInsert, DynamicUpdate, 엔티티 리스너 DynamicInsert, DynamicUpdate 기본적으로 하이버네이트는 INSERT와 UPDATE시에 모든 컬럼을 사용한다. @DynamicInsert는 INSERT 구문 생성 시점에 null이 아닌 컬럼들만 포함하며, @DynamicUpdate는 UPDATE구문 생성 시점에 null이 아닌 컬럼만(변경된 값만) 포함한다. 해당 애노테이션들은 엔티티에 직접 적용하여 사용한다. @DynamicInsert @DynamicUpdate @Entity public class User { // 생략 }@DynamicInsert는 컬럼의 지정된 default 값을 적용시키며 INSERT할 때 사용할 수 있다. @Coulmun(columnDefinition = "")에 지정한 default 값은 DDL 생성기능이..
git flow 한 번만 천천히 읽으면 이해가 되는 거 였다.. 주요 브랜치 master 항상 production-ready 상태를 유지하는 브랜치 develop 다음 출시(release)를 준비하는 브랜치 출시할 준비가 되면 master브랜치로 병합(merge) 후 릴리즈 번호를 태그로 지정 지원 브랜치 주요 브랜치(master, develop)와는 달리 제한된 수명을 가진다. 팀원간 병렬 개발, 기능 추적, 신속한 버그 수정 등을 담당한다. feature develop브랜치로부터 생성 새로운 기능을 개발할 때 사용 기능 개발 시작 시 브랜치를 생성하고, 개발이 완료되면 develop브랜치로 병합 후 제거 개발자의 local repository에만 존재 먼저 기능에 관련된 이름의 브랜치를 생성한다. 주로 feature..
JS | Truthy와 Falsy Truthy & Falsy Truthy는 boolean에서 true로 여겨지는 값 Falsy는 boolean에서 false로 여겨지는 값 Truthy는 true같은, Falsy는 flase같은.. 그런 거란다.. Truthy true 0이나 NaN이 아닌 숫자 {} (빈 객체) [] (빈 배열) Falsy false 0, -0 혹은 NaN undefined null '' (빈 문자열) if(0) // false if('0') // true (not empty string) if(null) // false if('null') // true (not empty string) if([]) // true !! (Double NOT) !는 NOT연산자. 즉 true는 f..
React | Uncontrolled Components Controlled Components와 Uncontrolled Components In a controlled component, form data is handled by a React component. The alternative is uncontrolled components, where form data is handled by the DOM itself. Controlled Compoents는 DOM(, 와 같은)의 값(value)를 state에 유지하고, 사용자가 값을 변경할 때 마다 state도 변경된다. 아래 코드에서 name이라는 상태값을 만들고, onChange, 즉 사용자가 값을 변경할 때 마다 name상태값도 계속 변경된다. Controlled Components의 form da..
의존관계 주입 방법 네 가지 스프링을 기준으로 한다. 1. 필드 주입 필드에 바로 주입하는 방법 가장 흔히들 사용하는 방법 중 하나 코드가 간결함 @Autowired private MemberService memberService; 2. setter 주입 필드의 값을 변경하는 setter 메서드를 이용하는 방법 자바빈 프로퍼티 규약의 수정자 메서드(setter) 방식을 이용 수정자 메서드를 생성해야하고, public으로 열어두어야 함 private MemberService memberService; @Autowired public void setMemberService(MemberService memberService) { this.memberService = memberService; } 3. 생성자 주입* 클래스의 생성자를 통해..
Composite Key (복합 키) PRIMAR KEY가 두 컬럼에 지정되어 있는걸 보고 어..?해서 찾아봤다 Composite Key 복합 키(Composite Key)는 두 개 이상의 컬럼을 Key로 지정하는 것을 말한다. PK(Primary Key, 기본키)는 한 테이블에 한 개만 존재할 수 있다. 하지만 꼭 한 테이블에 한 컬럼만 기본키로 지정할 수 있는 것은 아니다. 아래와 같이 PRIMARY KEY를 두 컬럼에 지정하면 에러가 발생한다. mysql> create table test ( -> id bigint primary key, -> seq bigint primary key); ERROR 1068 (42000): Multiple primary key defined 하지만 PRIMARY KEY(column1, column2) 이..
객체지향 설계 원칙 5가지 (SOLID) SOLID? 로버트 마틴이 명명한 객체 지향 프로그랭 및 설계의 다섯 가지 기본 원칙을 마이클 페더스가 두문자어 기억술로 소개한 것 1. SRP(Single Responsibility Principle) - 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다 (문맥과 상황에 따라 다름) 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 함 변경이 있을 때 파급 효과가 적어야 한다 클래스는 변경을 위한 단 하나의 이유만 가진다 2. OCP(Open-Closed Principle) - 개방-폐쇄 원칙 소프트웨어 요소(클래스, 모듈, 함수 등)는 확장에는 열려있어야 하고, 변경에 대해서는 닫혀 있어야 한다 변경없이 확장이 가능해야 한다 개방-폐쇄 원칙이 잘 적용되면, 기능을 추가하..
Mock, TestDouble Mock객체 실제 모듈을 대신하는 가짜 객체 구현하는 데 필요하지만 실제로 준비하기엔 여러 가지 어려움이 따르는 대상을 필요한 부분만큼만 채워넣어서 만든 객체 (출처: 테스트 주도 개발: 고품질 쾌속개발을 위한 TDD 실천법과 도구 189p) 모듈이 가진 의존성을 단절시키기 위해 사용 테스트더블(TestDouble) 제라드 메스자로스(Gerard Meszaros)가 만들어낸 용어 대역, 스턴트맨을 뜻하는 스턴트 더블(StuntDouble)에서 차용함 실제 객체를 사용해 테스트하기 어려울 경우 이를 대신해 테스트를 진행할 수 있도록 만들어주는 객체 더미 객체(Dummy Object) 인스턴스화된 객체가 필요하지만, 해당 객체의 기능까지는 필요하지 않은 경우 사용 더미 객체의 메서드가 호출되었을 때 정상동작..