2011-01-03 13 views
6

JPA kullanarak bir varlık zaten bir veritabanında olup olmadığını kontrol etmek için en iyi yol/en iyi uygulama nedir?Java JPA: Varlık zaten DB içinde var mı kontrol edin

Db'ye hostinformation ekleyen bir istemci yazıyorum. Örneğin, iliştirilen bellekler, hba vb ...

Ev sahibi için bir Lun eklemek isterseniz, lun veritabanında zaten olup olmadığını kontrol etmeliyim. (Lun zaten başka bir ana bilgisayara bağlanabilir).

  1. Ben
  2. Lun yerleştirin ve bir istisna (benzersiz kısıtlamayı) kontrol etmek
  3. deneyin db zaten olup olmadığını kontrol etmek, Lun için seçkin olun:

    Ben 2 possibilites bkz

Birisi bununla ilgili deneyime sahip.

BR, Rene

cevap

7
entityManager.find(SomeEntity.class, id) 

İade: bulundu varlık örneği veya boş bir varlık yoksa

Bu DB basit bir seçme yapacağız. Sadece koleksiyonlarınızın (varsa) tembel olduğundan emin olun.

+0

Bir işlem UI istemcisi (en iyi uygulama) için tamam olması gerekir. Toplu modda daha iyi performanslar için, yaratımı denemek ve (nadir) "zaten mevcut olan istisnayı" yakalamak daha hızlı olacaktır. (aslında, varlığın olasılığına bağlıdır, eğer çok sayıda istisna varsa, varlığın varlığını test etmek daha hızlı olacaktır). – snowflake

+0

Kimliği bilmiyorsam ne yapmalıyım? – reen

+0

daha sonra diğer alanlar için bir JPQL sorgusu oluşturun. – Bozho

4

Benzersiz kısıtlama özelliğinin denetlenmesinin daha iyi bir yol olduğunu düşünüyorum. Her ekleme için maliyeti düşünün ...

+0

Evet, yaptığım buydu. Sadece varlığı devam ettirin ve istisna ile uygun bir şekilde ilgilenin, böylece kullanıcı hangi alanın geçersiz olduğu konusunda bilgilendirilebilir. –