OSIV OSIV : Open Session In View spring.jpa.open-in-view JPA EntityManager를 request의 전체 처리 과정동안 thread에 binding한다. request의 life cycle동안 lazy loading을 사용할 수 있게한다. org.springframework.or...
OSIV
save와 saveAll의 성능 차이
save와 saveAll의 성능 차이 entity를 영속화시키기 위해 save()와 saveAll()을 사용할 수 있다. public interface CrudRepository<T, ID> extends Repository<T, ID> { <S extends T> S save(S entity); &...
AbstractAggregateRoot
AbstractAggregateRoot package: org.springframework.data.domain aggregate root를 위한 편의 base class public class AbstractAggregateRoot<A extends AbstractAggregateRoot<A>> { @Transien...
Serialization / Deserialization
Serialization / Deserialization Serialization은 객체의 상태를 byte stream으로 변환하는 방법이다. Deserialization은 byte stream을 메모리의 Java Object로 재생성하기 위해 사용되는 방법이다. 출처: https://media.geeksforgeeks.org/wp-conten...
JavaBean
Java Beans은 여러 객체들을 하나의 객체에 캡슐화한 클래스들을 의미한다. Java Beans Pattern과 연관이 있다. Java Beans Pattern은 매개변수가 없는 생성자로 객체를 만든 후 setter 메서드를 호출해 매개변수의 값을 설정하는 방식이다. 객체가 완전히 생성되기 전까지는 일관성이 무너진 상태에 놓이게 된다는 문제점...
Equals와 HashCode
equals와 hashcode는 모든 Java 객체의 부모 객체인 Object 클래스에 정의되어 있다. Object에서 final이 아닌 메서드(eqauls, hashcode, toString, clone, finalize)는 모두 Override를 염두에 두고 설계되었다. Override할때 지켜야 하는 규약이 명확히 정해져 있다. ...
자원을 직접 명시하지 말고 의존 객체 주입을 사용하라
자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 클래스가 하나 이상의 자원에 의존하는 경우가 있다. 맞춤법 검사기는 사전에 의존한다고 가정해보자. 유틸리티 클래스, 싱글턴 클래스로 구현할 수 있다. // 정적 유틸리티를 잘못 설계한 예 - 유연하지 않고 테스트가 어렵다. public class SpellChecker { privat...
인스턴스화를 막으려거든 private 생성자를 사용하라
인스턴스화를 막으려거든 private 생성자를 사용하라 static method와 static field만을 담은 클래스를 만들 때가 있다. 이러한 유틸리티 클래스들은 인스턴스로 만들어 사용하려고 설계 한 것이 아니다. 하지만, 생성자를 명시하지 않으면 컴파일러가 자동으로 기본 생성자를 생성한다. 추상 클래스를 만드는 것으로는 인스턴스화를 막을...
private 생성자나 열거 타입으로 싱글턴임을 보장하라
private 생성자나 열거 타입으로 싱글턴임을 보장하라 singleton 패턴 인스턴스를 오직 하나만 생성할 수 있는 패턴 함수와 같은 stateless한 객체나 설계상 유일해야 하는 시스템 컴포넌트에 사용하기 적합하다. 장점 최초 한번의 new 연산자를 통해 객체를 생성하고 추후에 생성한 객체를 계속 이용함으로써 메모리, 객체 생성비...
생성자에 매개변수가 많다면 빌더를 고려하라
생성자에 매개변수가 많다면 빌더를 고려하라 정적 팩토리 메서드(static factory method)와 생성자에는 선택적인 매개변수가 많을 때 적절하게 대응하기 어렵다는 제약조건이 있다. 한 객체를 생성하는데 생성자에 20개의 매개변수가 필요하다면? 생성자, 정적 팩토리 메서드는 불필요한 매개변수를 모두 입력 받아야 한다는 단점이 있다. 이를...