분류 전체보기95 JPA 사용시 주의사항 정리 엔티티에는 가급적 Setter를 사용하지 말자 Setter가 모두 열려있다. 변경 포인트가 너무 많아서, 유지보수가 어렵다. 모든 연관관계는 지연로딩으로 설정하자 즉시로딩(EAGER)은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다. 특히 JPQL을 실행할 때 N+1 문제가 자주 발생한다. 실무에서 모든 연관관계는 지연로딩(LAZY)으로 설정해야 한다. 연관된 엔티티를 함께 DB에서 조회해야 하면 , fetch join 또는 엔티티 그래프 기능을 사용한다. @XToOne(OneToOne , ManyToOne) 관계는 기본이 즉시로딩이므로 직접 지연로딩으로 설정해야 한다. 컬렉션은 필드에서 초기화 하자 컬렉션은 필드에서 바로 초기화 하는 것이 안전하다. Null 문제에서 안전하다. 하이버네이트는 .. 2020. 8. 22. 상속 괜찮은가? (컴포지션) 부모클래스 class Person{ void eat(String food){ System.out.println("먹다"); } void eatAll(String[] foods){ for (String a: foods) { eat(a); } } } 상속 받은 자식 클래스 class Grandfather extends Person { private int count = 0; @Override void eat(String food) { count++; super.eat(food); } @Override void eatAll(String[] foods) { count = count + foods.length; super.eatAll(foods); } public int getCount() { return cou.. 2020. 8. 10. 제네릭의 모든것 자바5부터 제네릭 타입이 새로 추가되었다. 제네릭을 이용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있게 되었다. 제네릭을 정확하게 알고있고 클래스를 설계한다면 클래스는 더욱 이쁘고 , 깔끔해 질 수있다고 확신한다!! 대표적인 장점 2가지 컴파일 시 강한 타입 체크를 할 수 있다. 타입 변환(casting)을 제거한다. 제네릭 제한된 타입 파라미터 class Fruit { public String toString(){ return "Fruit"; } } class Apple extends Fruit{ public String toString(){ return "Apple"; } } class Banana extends Fruit{ public String toString(){.. 2020. 8. 8. Disjoint Set(서로수 집합) Disjoint Set : 디스조인트 셋 ? 서로수집합은 한개의 집합으로는 성립되지 않고 집합이 여러개있을때 서로서로 공통적인 원소가 없어 모든 집합의 교집합은 공집합( Φ )이 된다는 말이다. 서로수 집합도 집합이니 집합 연산이 필요한데 서로수집합은 서로 공통원소가 없으니 차집합, 교집합은 의미가 없다. 차집합 교집합을 해봤자 다 공집합이기 때문이다. 따라서 합집합만 있으면 될것 같은데 서로수집합에서 합집합을 찾는 것을 disjoint set - 유니온(Union) 이라 하고 각 원소에가 트리의 어떤 루트노드에 연결되어 있는지 그 루트를 찾는 연산을 disjoint set - 파인드(Find) 라 부른다. 초기에 각 노드는 자기 자신을 루트 노드로 가진다. for(int i = 1; i 2020. 7. 29. 이전 1 ··· 3 4 5 6 7 8 9 ··· 24 다음