JPA의 장점 객체에 적절한 책임을 할당하는 객체지향적 개발이 가능하다. 새로운 필드가 추가될 때마다 쿼리를 수정해야 하는 문제가 발생하지 않는다. 생성 방식 create: 기존 테이블 삭제 후 다시 생성 (개발) create-drop: create와 같으나 종료 시점에 테이블 drop (개발) update: 변경된 부분만 반영 (테스트, 개발) validate: entity와 table이 정상 매핑되었는지만 확인 (테스트, 운영) none: 사용하지 않음 (스테이징, 운영) 데이터베이스 스키마 생성 방식 설정 // application.properties spring.jpa.hibernate.ddl-auto={생성_방식} 스키마 자동 생성을 위한 Entity class 작성법 @Entity // (1)..
정적 팩토리 메소드란? 생성자를 통해 객체를 생성하는 것이 아닌 메서드를 통해 객체를 생성하는 것을 정적 팩토리 메서드라고 한다. 인스턴스 캐싱과 함께 사용하여 매번 새로운 인스턴스를 생성하지 않을 수 있다. 인스턴스 캐싱이란? 인스턴스를 미리 만들어 두고 필요할 때 사용함으로서 메모리 낭비를 해결하는 방법이다. public class LottoNumber { // 인스턴스 캐싱 private static final Map lottoNumbers = new HashMap(); // 1부터 45까지 LottoNumber 객체를 미리 생성한다. static { for (int number = LOTTO_START_NUMBER; number
디미터의 법칙(Law of Demeter) 상태를 가지는 객체의 데이터를 꺼내려 하지 말고 메세지를 보내라. 객체의 자료를 숨기고 함수를 공개함. 코드의 중복 사용 방지와 유지 보수성을 높일 수 있다. 결합도를 낮추고 응집도를 높일 수 있다. 디미터의 법칙을 위반한 경우 public class Lotto { private List LottoNumbers; public Lotto(List lottoNumbers) { LottoNumbers = lottoNumbers; } public List getLottoNumbers() { return LottoNumbers; } } @Test void 디미터의_법칙_위반() { List lottoNumbers = new ArrayList(Arrays.asList(1,..
일급 컬렉션(First Class Collection) Wrapping한 Collection 외에 다른 멤버 변수가 없는 상태 특정 역할만을 수행하는 자료구조 // 기존 public class Racing { private List cars; } // 변경 public class Racing { private Cars car; } public class Cars {// List를 Cars 클래스로 Wrapping private List cars;//멤버 변수가 하나 밖에 없는 일급 컬렉션 public Cars(List cars){ this.cars = cars; } } 원시값, 문자열 포장 원시 타입 또는 문자열을 객체로 포장 // 기존 public class User { private String na..