2012-02-08 1 views
1

최대 절전 모드로 유지되는 클래스 생성자의 Set 초기화에 문제가 있습니까?Hibernate 생성자

개체가 최대 절전 모드로로드 된 경우 해당 집합이 비어 있어도 설정이 초기화됩니다. 즉, 빈 집합 일 뿐이 기 때문에 .equal 구현에 문제가 있습니다. 새로 생성 된 객체에서 null 인 경우. 나는 이것이 평등 한 방법으로 처리 될 수 있다는 것을 알고 있지만 그 이후로는 조금 비싸다. 왜냐하면 null은 빈 집합과 실제로 같지 않기 때문이다.

내가 생성자를 빠뜨린 이유는 성능의 관점에서 클래스의 Set 속성을 초기화 (새 HashSets 또는 이와 유사한 생성)하는 데 아무런 문제가 없다는 것을 알았고 최대 절전 모드로 다시 초기화했기 때문입니다. (나는 그것을 추측하고있다?).

난 이것에 대해 걱정할 필요가 없으며 생성자에서 Set 데이터 구조를 초기화해야합니까? 또는 새 인스턴스를 수동으로 초기화하는 경우에 대한 특수 생성자를 만들 수도 있습니다.

+2

"성능 ... 나는 추측하고 있습니다."- 당신이 잘못하고 있습니다. 먼저 프로필을 작성한 다음 필요한 경우 최적화하십시오. :) –

답변

5

개체에는 불변량이 있어야하며 이러한 불변량 중 하나는 컬렉션이 null이 아니어야한다는 것입니다. 그것들은 비어있을 수 있지만 null이 될 수는 없습니다. 그래서 네, 생성자에서 빈 세트를 인스턴스화해야합니다.

Hibernate가하는 작업, 데이터베이스에 대한 네트워크 호출 등과 비교할 때이 작업을 수행하는 데 드는 비용은 무시해도 좋습니다. 성능상의 차이는 없습니다.

0

멤버 변수 선언에서 집합을 초기화하고 기본 0 인수 생성자를 사용하며 성능에 대해 걱정하지 마십시오. 데이터베이스 히트 및 네트워크 트래픽은 빈 세트를 생성하는 데 걸리는 오버 헤드를 완전히 없애줍니다.