본문 바로가기
반응형

전체 글222

[EffectiveJava] Item14 Comparable을 구현할지 고려하라 Item14는 Comparable Interface의 메서드인 compareTo()에 대한 내용을 다룬다. compareTo 메서드는 Object의 메서드가 아닌 Comparable 메서드이며 두가지만 빼면 Object 클래스의 equals와 같다. compareTo 메서드는 단순 동치성 비교에 더해 순서까지 비교할 수 있고, 제네릭하다. Comparable를 구현했다는 것은 해당 클래스의 인스턴스들에는 순서가 있음을 뜻한다. 따라서 Comparable 를 구현한 객체들의 배열은 손쉽게 정렬 가능하다 Arrays.sort(arrays) Comparable을 구현하면 다양한 기능을 누릴 수 있다. 자바 라이브러리의 모든 값 클래스, 열거형 타입은 Comparable을 구현했다. 순서가 명확한 값 클래스를 .. 2020. 12. 27.
[EffectiveJava] Item13 clone 재정의는 주의해서 진행하라. Cloneable 는 복제해도 되는 클래스라는것을 명시하는 용도의 인터페이스 이지만, clone메서드가 선언된 곳이 Cloneable 클래스가 아닌 Object 클래스이다 또한 clone 메서드는 protected로 되어있다. 그래서 외부 객체에서 clone 메서드를 호출할 수 없다. ( 리플렉션을 사용하면되지만 반드시 성공하는 것은 아니다 ) // 실제 Object 클래스 안에있는 clone의 코드 protected native Object clone() throws CloneNotSupportedException; 하지만, 이런 문제가 있더라도 실제로 Cloneable 방식을 널리 사용되고 있기 때문에 알아두면 좋습니다. Item13에서는 clone 메서드를 구현하는 방법과 언제 그렇게 사용하는지 설.. 2020. 12. 27.
[JPA] 준영속과 병합 이번에는 영속상태와 비영속상태에 대해 알아봤습니다. 이번에는 준영속 상태에 대해 알아보고자 한다. 준영속 상태는 앞에서 초반에 얘기했듯이 영속상태였다가 -> 영속성 컨텍스트에서 더이상 관리하지 않을때(분리된)의 상태를 준영속 상태라고 한다. 결과적으로 영속성 컨텍스트에서 관리하지 않기 때문에 영속성 컨텍스트가 제공하는 기능을 사용할 수 없습니다. 영속성 상태의 엔티티를 준영속 상태로 만드는 방법은 3가지로 분류된다. 1. entityManager.detach(entity); // 해당 entity를 detach메서드를 통해 준영속 상태로 만든다. 2. entityManager.clear(); // 영속성 켄텍스트를 초기화한다. 3. entityManager.close(); // 영속성 컨텍스트를 종료한다.. 2020. 12. 25.
[JPA] 플러시 ( flush ) 플러시 (flush) 이번에는 JPA 에서 flush가 무엇인지에 대한 내용에 대해 포스팅하고자 한다. flush는 영속성 컨텍스트의 변경된 내용을 데이터베이스에 반영하기 위해 사용한다. 플러시(flush)를 실행하면 다음과 같은 일이 일어난다. JPA의 변경 감지가 동작하여 영속성 컨텍스트에 있는 모든 Entity를 스냅샷과 비교하여 변경된 Entity를 찾는다. 수정된 Entity는 수정 쿼리를 만들어서 쓰기 지연소에 저장한다. 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송한다. ( 등록, 수정, 삭제 ) 위의 두가지 방법으로 flush가 동작합니다. 그렇다면 flush를 하는 방법은 어떤것들이 있을까?? *■ 직접 호출 * EntityManager의 flush()메서드를 직접 호출하여 강제로.. 2020. 12. 22.
반응형