2013-03-20 3 views
1

저는 Spring JDBC를 사용하고 있으며 데이터베이스에 지속적으로 유지되었는지 여부를 확인하는 메소드를 만들려고합니다. 즉, 자동으로 증가 된 키를 얻었을 것입니다.객체가 데이터베이스에 저장되었는지 확인하는 방법

필드 유형이 int 인 id입니다. 프리미티브 int는 0이 할당되었으므로 다른 값을 지정하지 않으면 id == 0을 확인하는 메서드를 만들 수 있지만 기본 키 시퀀스가 ​​1로 시작하는지 확인해야합니다.

또한 리포지토리에 메서드를 만들 수 있습니다. 개체가 저장되었는지 확인하십시오. 그러나 이에 대한 쿼리를 수행하고 싶지는 않습니다. 이 null 있다면 내가 생각할 수

마지막 옵션은 확인 후 Integerid의 유형을 변경하고 있었다하지만 그것을 할 수있는 좋은 방법이 있을지 모르겠어요.

도메인 계층에서이 작업을 수행 할 수있는 방법이 있습니까?

+1

일반적으로 ID (데이터베이스에 지속성에 할당 됨)를 사용하는 것이 좋은 방법 인 것처럼 보입니다. JPA 나 Spring과 같은 ORM을 살펴 보았습니까? 이러한 프레임 워크의 기본적인 기능으로 바퀴를 돌릴 수 있습니다. 또 다른 (쉬운) 옵션은 테이블에 저장 프로 시저 또는 자동 증가가 있으므로 null 또는 음수 값이 저장되지 않는다는 것을 알 수 있습니다. 오버플로 조심해! –

+0

어쩌면 내 질문에 약간의 불명확 함이 있습니다. 지금 업데이트했습니다. – LuckyLuke

답변

3

Integerint에서 id의 유형을 변경하는 것은 좋은 생각 간주됩니다 같은 Hibernate 및 JPA 등의 지속성 프레임 워크를 장려 (java.net에서이 예제와 adam-bien.com에서이 하나를 참조하십시오).

개체 유형을 사용하면 id == null을 확인하는 것만으로도 지속되지 않은 개체를 빠르게 말할 수 있습니다.

  • id == null : 그냥 완전성에 대한 개체가 이미 UPDATE

이 방법을 수행, 저장, 당신은 0을 치료하기 위해 (또는하지 않는 : 저장되지 않은 객체, INSERT

  • id != null을 수행 다른 정수 값)을 특별한 경우 의미로 초기화되지 않음; 당신은 이미 null을 가지고 있습니다. 이것은 특별한 경우에 대한 아이디어를 멋지게 전달합니다.

    은 비즈니스 핵심

    더 좋은 방법을 추가, this article에서 제안, 데이터베이스 관리 ID에 additon에서 비즈니스 키를 사용하는 것입니다. 비즈니스 키는 자동 생성 기본 키 (대리 키)와 달리 사용자에게 일부 의미가 있습니다 (자연 키).

    그런 다음 equals 메서드를 재정의하여 자동 생성 된 기본 키가 아닌 비즈니스 키를 사용하는 두 개체를 비교해야합니다.

  • +0

    프리미티브보다 개체를 사용하는 것이 더 좋은 이유는 무엇입니까? – LuckyLuke

    +0

    방금 ​​답변을 업데이트했습니다. –

    +0

    'null'은 특수한 경우로 잘 작동합니다. –

    관련 문제