자바에서는 동등성과 동일성이 존재한다.
동일성을 나타내는 ==는 jvm에 정의돼 있는 개념이다.
두 객체가 같은 메모리 위치를 가리키고 있다면 두 객체 참조는 동일하다고 보는 것이다.
==비교는 같은 클래스 형이지만 물리값이 다르면 다르다고 나오는것이다.
동등성은 equals() 메서드를 구현하는 클래스에 의해 정의되는 개념이며, 서로 다른 두 객체가 같은 값을 갖는것을 말한다. 메모리 공간상에 점유하는 위치가 각자 다르더라도 서로 다른 두 string이 같은 문자를 나타낸다면 두 string은 같다고 보는 식이다.
영속화를 더하면 영속 객체는 데이터베이스 테이블의 특정한 한 행을 메모리 상에서 표현하게 된다. rdbms에 저장된 객체는 같은 행을 나타내거나, 동등하게 같은 테이블과 주키 값을 공유할 때 동일하다. 이 개념을 테이터베이스 동일성이라 한다.
따라서 자바 동일성과 객체 동등성을 비롯해 데이터베이스 동일성(영속 데이터 저장소에서의 위치)까지 더해지는것까지 객체를 식별하는 방법은 세 가지가 된다.
하이버네이트는 두가지 방식으로 데이터베이스 동일성을 드러낸다.
- 영속 인스턴스의 식별자 프로퍼티 값
- session.getIdentifier의 반환값.
출처 - 하이버네이트 인 액션
'개발' 카테고리의 다른 글
자바 다형성과 추상클래스 (0) | 2016.10.05 |
---|---|
http url 문법과 리소스 (0) | 2016.09.01 |
프로그램 개발 할때 가장 먼저 해야하는 비즈니스 도메인! (0) | 2016.08.30 |
하이버네이트 영속화, 왜 하이버네이트를 사용하는지, 패러다임 불일치 (0) | 2016.08.29 |
java7 특징 및 예제 (0) | 2016.08.28 |