Czy istnieje (realna) różnica między fetchAny()
i fetchOne()
? Oba zwracają dokładnie jeden rekord. Dokumentacja API jest taka sama, ale implementacja (na github) jest inna.jOOQ - różnica między fetchAny i fetchOne
Odpowiedz
Intencją obu metod jest inna:
-
Powroty:
Otrzymany zapis lub null, jeśli kwerenda zwraca żadnych rekordów.
Zgłasza:
TooManyRowsException
- jeśli zapytanie zwróciło więcej niż jeden rekord -
Powroty:
Pierwsze res rekord ulting lub null, jeśli zapytanie nie zwraca żadnych rekordów.
W istocie, gdy używasz fetchOne()
kwerendy musi zwracać 0 lub 1 rekord. Podczas korzystania z zapytania fetchAny()
zapytanie może zwrócić dowolną liczbę rekordów, a jeśli któryś rekord zostanie zwrócony przez bazę danych, zwrócony zostanie pierwszy pobrany z zestawu wyników JDBC.
The javadoc wyjaśnia różnicę. fetchAny()
zwraca pierwszy rekord, natomiast fetchOne()
oczekuje, że zapytanie zwróci zero lub jeden rekord, i zgłasza wyjątek, jeśli zapytanie zwróciło więcej niż jeden rekord.
- 1. Odzyskiwanie wartości selectCount w jooq
- 2. JOOQ konkatenacji
- 3. Różnica między unwrapObservable i()
- 4. Różnica między "**/* /" i "** /"?
- 5. Różnica między | = i^= css
- 6. Composer.phar różnica między | i ||
- 7. Różnica między "% ~ dp0" i ". \"?
- 8. Różnica między ". +" I ". +?"
- 9. MySQL: Różnica między ",", "i"
- 10. Różnica między (++ i) oraz (i ++)
- 11. Różnica kręgosłupa Różnica między CompositeView i CollectionView?
- 12. Wielozakresowy konwerter niestandardowy JOOQ
- 13. Różnica między logger.info i logger.debug
- 14. Różnica między fgets i fscanf?
- 15. Różnica między NSLog i DLog
- 16. Różnica między RoutedEventHandler i EventHandler
- 17. Różnica między obrysem i wypełnieniem?
- 18. Różnica między Parameters.Add i Parameters.AddWithValue
- 19. Różnica między putback() i unget()
- 20. Różnica między Delegate.BeginInvoke i Thread.Start
- 21. Różnica między TVar i TMVar
- 22. Różnica między DatagramSocket i DatagramChannel
- 23. Różnica między intent.setClass() i intent.setComponent()
- 24. różnica między -lgcc_s i gcc
- 25. Różnica między string.ToLower i TextInfo.ToLower
- 26. Różnica między javax.sql i java.sql?
- 27. Różnica między paint() i paintcomponent()?
- 28. Różnica między app.all ("*") i app.use ("/")
- 29. Różnica między c() i append()
- 30. Różnica między KeyEventArgs.systemKey i KeyEventArgs.Key
Jakiekolwiek korzyści związane z wydajnością za pomocą funkcji fetchOne()? Czy mogę założyć, że przestaje ona znajdować rekord w tabeli, jeśli został już znaleziony? –
@vinaypatlolla: jOOQ pobierze co najwyżej dwa rekordy z JDBC 'ResultSet' (Pierwszy jest zwracany, a drugi jest potrzebny do sprawdzenia, czy' fetchOne() 'musi wyrzucić' TooManyRowsException'). Powinieneś jednak upewnić się, że zarówno 1) twój sterownik JDBC nie buforuje zbyt wielu wierszy, 2) twoja baza danych faktycznie nie wczytuje wszystkich wierszy w kursorze. Najlepiej, jeśli użyjesz także klauzuli limit (1) jOOQ. –
Dzięki @Lukas Eder. A przy okazji JOOQ jest niesamowity:) Używam go od 2 miesięcy i bardzo nam pomaga. –