2. 생성자에 매개변수가 많다면 빌더를 고려하라. 정적 팩토리와 생성자에는 똑같은 제약이 하나 있다. 선택적 매개변수가 많을 때 적절히 대응하기 어렵다는 점이다. 점층적 생성자 패턴(Telescoping Constructor Pattern) public class Member { private final String name; // 필수 private final String email; // 필수 private final int age; // 선택 private final String gender; // 선택 public Member(String name, String email) { this(name, email, 0); } public Member(String name, String email, in..
1. 생성자 대신 정적 팩토리 메서드를 고려하라. 정적 팩토리 메서드 ⇒ 해당 클래스의 인스턴스를 반환하는 단순한 정적 메서드 public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } public 생성자 대비 정적 팩토리 메서드의 장점 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 반면 정적 팩토리 메서드는 명명만 잘하면 반환될 객체의 특성을 쉽게 묘사 가능한다. 호출될 때마다 인스턴스를 새로 생성하지는 않아도 된다. 정적 팩토리 방식의 클래스는 언제 어느 인스턴스를 살아 있게 할지를 통제할 수 있다. 인스턴스를 통제할 수 있으면 클래스를 ..

자바 ORM 표준 JPA 프로그래밍 - 기본편 JPQL - 벌크 연산 벌크 연산 재고가 10개 미만인 모든 상품의 가격을 10% 상승시키려면 JPA 변경 감지 기능으로 실행하려면 너무 많은 SQL 실행 재고가 10개 미만인 상품을 리스트로 조회한다. 상품 엔티티의 가격을 10% 증가한다. 트랜잭션 커밋 시점에 변경감지가 동작한다. 변경된 데이터가 100건이라면 100번의 Update Sql 실행 쿼리 한 번으로 여러 테이블 row 변경 // excuteUpdate()의 결과는 Update 또는 Delete된 엔티티의 수를 반환한다. int resultCount = em.createQuery("update Member m set m.age = 20") .excuteUpdate();벌크 연산 주의사항 벌크 ..

자바 ORM 표준 JPA 프로그래밍 - 기본편 다형성 쿼리 TYPE 조회 대상을 특정 자식으로 한정 예) Item중에 Book, Movie를 조회해라 JPQL - select i from Item i where type(i) in (Book, Movie) SQL - select i from where i.DTYPE in ('B', 'M') TREAT(JPA 2.1) 자바의 타입 캐스팅과 유사 상속 구조에서 부모 타입을 특정 자식 타입으로 다룰 때 사용 FROM, WHERE, SELECT(하이버네이트 지원) 사용 예) 부모인 Item과 자식 Book이 있다. JPQL - select i from Item i where treat(i as Book).author = 'ki..

자바 ORM 표준 JPA 프로그래밍 - 기본편 Named 쿼리 Named 쿼리 - 정적 쿼리 미리 정의해서 이름을 부여해두고 사용하는 JPQL 정적 쿼리 어노테이션, XML에 정의 애플리케이션 로딩 시점에 초기화 후 재사용 애플리케이션 로딩 시점에 쿼리를 검증(장점) Spring data jpa 에서 @Query 가 네임드 쿼리로 등록된다고 보면된다. Named 쿼리 - 어노테이션 @Entity @NamedQuery( name = "Member.findByUsername", query = "select m from Member m where m.username = :username") public class Member { // ... } List resultList = em.createNamedQuer..

자바 ORM 표준 JPA 프로그래밍 - 기본편 엔티티 직접 사용 엔티티 직접 사용 - 기본 키 값 JPQL에서 엔티티를 직접 사용하면 SQL에서 해당 엔티티의 기본 키 값을 사용 JPQL select count(m.id) from Member m → 엔티티의 아이디를 사용 select count(m) from Member m → 엔티티를 직접 사용 SQL(위 JPQL들은 아래 SQL과 같은 결과를 도출한다.) select count(m.id) as cnt from Member m 엔티티 직접 사용 - 왜래 키 값 Team team = em.find(Team.class, 1L); String qlString = "select m from Member m where m.team = :team"; List r..
- Total
- Today
- Yesterday
- effetive java
- javascript
- 프로그래머스
- frontend
- Backend
- 포트충돌
- 팀즈 느려짐
- vue
- HTTP body
- 디자인패턴
- ES6
- java
- http header
- 맥북 키보드 딜레이
- 코테
- 이펙티브 자바
- 코딩테스트
- 알고리즘
- 템플릿 메서드 패턴
- 맥 포트 죽이기
- SOLID원칙
- Spring
- Design Pattern
- http
- 팀즈
- ORM
- JPA
- Mackbook
- Vue.js
- 맥 팀즈 캐시 삭제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |