목록전체 글 (23)
ordinary
Item31 : 한정적 와일드카드를 사용해 API 유연성을 높이라 스택 메서드(javadoc) 더보기 public class Stack extends Vector { /** * Creates an empty Stack. */ public Stack() { } /** * Pushes an item onto the top of this stack. This has exactly * the same effect as: * * addElement(item) * * @param item the item to be pushed onto this stack. * @return the {@code item} argument. * @see java.util.Vector#addElement */ public E push(..
Item28 : 배열보다는 리스트를 사용하라 Item29 : 이왕이면 제네릭 타입으로 만들라 Item30 : 이왕이면 제네릭 메서드로 만들라 Item28 : 배열보다는 리스트를 사용하라 배열(Array) 배열(array)은 같은 타입의 변수들로 이루어진 유한 집합 리스트(List) 자바에서 제공하는 인터페이스 https://docs.oracle.com/javase/6/docs/api/java/util/List.html 배열은 공변이고 제네릭(리스트)은 불공변이다. https://stackoverflow.com/questions/6684493/why-are-arrays-invariant-but-lists-covariant Super이 Sub의 상위타입일때 Super[]은 Sub[]의 상위타입이 된다. 반면..
Generic이란 ? 다양한 타입의 객체를 컴파일시에 체크하는 기능 T : Type Variable E : Element K : Key V : Value 제네릭은 개인적으로 실무에서 각 도메인의 dto -> ResponseEntity(를 사용한 커스텀 객체)로 한번 더 묶어줄때 쓰면 좋겠다고 생각했음. 별 내용없는것 같은데 책이랑 자료에서는 굉장히 어려운 내용 처럼 보인다...아는만큼 보이는건가.. 실무에서 사용할때의 예시를 많이 기억해두면 좋을 듯 하다. Item26 : 로(raw) 타입은 사용하지 말라 Item27 : 비검사 경고를 제거하라 Item26 : 로(raw) 타입은 사용하지 말라 raw type이란? List names = new ArrayList(); // 이게 raw type! name..
Member, Order 엔티티에서 즉시로딩, entityManager 쿼리 두번 조회가 아닌 조인 사용 즉시로딩, JPQL 쿼리 두번 조회 지연로딩, JPQL 주문 컬렉션은 조회되지 않고 지연됨(n개의 쿼리는 나중에라도 실행됨) LAZY로딩은 해결방안이 아님 페치조인, JPQL inner join으로 조회됨 (해결) 일대다 조인을 사용했으므로 distinct를 사용해 중복을 제거하는 것이 좋음 hibernate에서 제공하는 @BatchSize 어노테이션 in( ?, ?, ...) 절을 사용해서 조회 (size=n) 을 설정할 수도 있고 properties 파일에서 설정할 수도 있다. hibernate에서 제공하는 @Fetch(FetchMode.SUBSELECT) 즉시로딩, 지연로딩 둘 다 가능 subs..
Item20 : 추상 클래스보다는 인터페이스를 우선하라. Item21 : 인터페이스는 구현하는 쪽을 생각해 설계하라. Item22 : 인터페이스는 타입을 정의하는 용도로만 사용하라. Item20 인터페이스는 implements 를 사용해 간단하게 구현할 수 있지만 abstract class는 클래스에 끼워넣기 어렵다. 인터페이스는 클래스가 원래 구현하는 주된 타입 외에 선택적 행위를 한다고 선언하는 효과가 있음. -> 유연성 골격 구현 자바에서 제공하는 Comparable, Iterable, AutoClaseable 인터페이스의 기능 item21 Collection인터페이스에서 사용되는 removeIf 함수를 디폴트 메서드로 예시를 들었는데 (아래코드) default boolean removeIf(Pre..
- item18 : 상속보다는 컴포지션을 사용하라 - item19 : 상속을 고려해 설계하고 문서화하라. 그렇지 않았다면 상속을 금지하라. - item18의 상속보다는 컴포지션을 사용하라 에서 '상속'과 '컴포지션(포함)'에 대해 한번 짚고 넘어가고자 한다. 1. 상속 : OOP에서 나오는 개념으로 기존의 클래스를 재사용하여 새로운 클래스를 작성하는것. // parent public class ParentClass { int number; public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } } // child public class ChildClass extends Paren..