more, 그것은 아무것도 변경되지 않습니다.
그러나 Bytecode Ninja가 지적한 것처럼 기본 null 0의 기본 값을 할당 된 0과 구별 할 수는 없지만 null과 가능한 모호성은 없습니다 (null id는 항상 새 엔터티를 의미 함) 그래서 nullable 래퍼 유형을 사용하는 것을 선호합니다.
그리고 이것은 최대 절전 모드 권장 사항입니다. 참조 문서에서 :
4.1.2. 식별자 속성 제공 (선택 사항)
Cat에는 id라는 속성이 있습니다. 이 등록 정보는 데이터베이스 테이블의 기본 키 열에 매핑됩니다. 이 속성은 무엇이라도 호출되었을 수 있으며 그 유형은 기본 유형, 기본 "래퍼"유형, java.lang.String 또는 java.util.Date 일 수 있습니다. 레거시 데이터베이스 테이블에 복합 키가있는 경우 이러한 유형의 속성을 가진 사용자 정의 클래스를 사용할 수 있습니다 (이 장의 뒷부분에있는 복합 식별자 섹션 참조).
identifier 속성은 필수적으로 선택 사항입니다. 그것들을 남겨두고 Hibernate로 하여금 객체 식별자를 내부적으로 추적하도록 할 수있다. 그러나 우리는 이것을 권장하지 않습니다.
실제로, 일부 기능 만 식별자 속성을 선언하는 클래스 사용할 :
분리 개체 (캐스케이드 업데이트 또는 캐스케이드 병합) 용
이적 재접속 - 10.11 절 "트랜 지속성" Session.saveOrUpdate () Session.merge() 영속 클래스에 일관성있는 식별자 속성을 선언하고 nullable (즉, 프리미티브가 아닌) 유형을 사용하는 것이 좋습니다.
그리고 실제로 내 기본 클래스에서이를 활용 :
@MappedSuperclass
public class BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Transient
public boolean isNew() {
return (this.id == null);
}
}
여기에서 자세한 내용을 확인하시기 바랍니다 :
https://stackoverflow.com/posts/3537407/edit
나는 널 (NULL) "savedness"표시등이 매우 좋은 방법이다라고 말하고 싶지만. (ID 또는 버전/타임 스탬프 열이든간에) – millimoose
+1, null 값은 중요한 감시 신호입니다. 같은 이유로 모든 엔티티 객체에 래퍼를 사용합니다. – Perception
그래서 ID 버전이나 타임 스탬프에는 래퍼가 선호되지만 다른 사람에게는 그렇지 않습니다. –