목록전체 글 (28)
JaeniWorld
영속성 컨텍스트(Persistence Context) Persistence Context는 엔티티를 영구저장하는 환경, Entity Manger로 엔티티를 저장하면 엔티티매니저는 엔티티를 영속성 컨텍스트에 보관하고 관리함. Entity의 @id 어노테이션을 이용하여 엔티티를 식별함 쓰기 지연 기능이 존재하여 값을 변경하자마자 DB에 반영되지 않고 EntityManager가 Commit()을 호출할 때 DB반영 == Flush 1차캐시, 동일성 보장, 변경 감지, 지연 로딩의 특징을 가짐 스프링에서 EntityManager를 주입 받아서 쓰면, 같은 트랜잭션 범위에 있는 EntityManager는 동일 영속성 컨텍스트에 접근함. Entity LifeCycle 비영속 (new) persistence cont..
디폴트메소드(Default methods) Java 8 이전 인터페이스는 메소드만 정의할 수 있고 내용은 구현할 수 없었다. 하지만 Java 8부터는 디폴트메소드(Default methods) 기능이 추가되면서 default를 추가하면 구현 내용을 추가할 수 있도록 변화하였다. 또한 다중상속 동작이라는 유연성을 제공해 하나의 클래스에 여러 디폴트 메소드를 상속받을 수 있게 되었다. 디폴트메소드가 쓰이는 시점 디폴트메소드는 주로 기존 공개된 API의 변경이 필요할 때이다. 이전에는 디폴트메소드가 없었기 때문에 인터페이스에 새기능을 추가하면 이를 implement받은 클래스가 모두 새로운 기능을 구현해야했는다. 하지만, 이렇게 되면 호환성 문제가 생기기 때문에 인터페이스 자체에서 기본으로 기능을 구현하여 제..
Optional 클래스 java.util.Optional라는 새로운 클레스를 제공하여 변수에 null을 할당하지 않고, Optional.empty메서드로 Optional를 반환받아 할당한다. 따라서 Optional을 사용하면 값이 없는 상황이 소유한 데이터에 문제가 있는지 아닌지알 수 없기 때문에 모든 null참조를 Optional로 대체하는 것은 옳지않다. Map과 FlatMap Optional에서의 map도 Stream의 map과 비슷한 역할로 Optional이 값을 포함하면 map의 인수로 제공된 함수가 값을 바꾼다. Flatmap역시 Stream의 것과 비슷한 역할을 지니는데 map()을 통해 변환을 하다보면 Optional와 같은 이차원 Optional을 반환한다. 이때 Flatmap을 통해 이..