2011-01-03 9 views
6

Jaki jest najlepszy sposób/najlepsza praktyka, aby sprawdzić, czy jednostka jest już w bazie danych za pomocą JPA?Java JPA: Sprawdzanie wydajności, jeśli Entity jest już w DB

Piszę klienta, który dodaje informacje o hostach do bazy danych. Na przykład dołączony magazyn luns, hba itp. ...

Jeśli chcę dodać Lun dla hosta, muszę sprawdzić, czy lun jest już w bazie danych. (The Lun można już podłączyć do innego hosta).

widzę 2 realnych możliwościach:

  1. robię wybierz dla Lun, aby sprawdzić, czy jest już w db
  2. Spróbuj wstawić Lun i sprawdzić wyjątek (unique)

Czy ktoś ma z tym doświadczenie.

BR, Rene

Odpowiedz

7
entityManager.find(SomeEntity.class, id) 

Powroty: znaleziony wystąpienie podmiotu lub null, jeśli jednostka nie istnieje

Będzie to zrobić proste wybierz w DB. Tylko upewnij się, że twoje kolekcje (jeśli są) są leniwe.

+0

Powinno być ok dla klienta transakcyjnego UI (najlepsza praktyka). Aby uzyskać lepsze wyniki w trybie masowym, szybciej będzie wypróbować tworzenie i przechwycić (rzadko) "już istnieje wyjątek". (w rzeczywistości zależy to od prawdopodobieństwa istnienia jednostki, jeśli istnieje wiele wyjątków, szybciej będzie testować istnienie jednostki). – snowflake

+0

Co mam zrobić, jeśli nie znam identyfikatora? – reen

+0

następnie utwórz zapytanie JPQL dla innych pól. – Bozho

4

Myślę, że sprawdzanie unikalnego wyjątku ograniczenia jest lepszym sposobem. Pomyśl o kosztach każdej wstawki ...

+0

Tak, właśnie to zrobiłem. Po prostu upuść podmiot i poradzisz sobie z wyjątkiem w odpowiedni sposób, aby w końcu użytkownik mógł zostać poinformowany, które pola są nieprawidłowe. –

Powiązane problemy