Im Ruhezustand sowie einfache ORM-Strategie, ich bin in der Regel alle Werte für die Objekte laden. Gibt es eine Möglichkeit, dies zu vermeiden. Durch diese meine app langsam ..Wie können wir das unnötige Laden von Objekten reduzieren?
Antwort
Es gibt mehrere Möglichkeiten, dies zu erreichen laufen:
Cachingaktivieren. Während sich das SQL nicht ändert, vergleicht Hibernate die Ergebnisse aus der Datenbank und verwendet vorhandene Objekte erneut. Dies gibt keinen enormen Schub, ist aber einfach zu implementieren und zu warten.
Erstellen Sie eine zweite Zuordnung (gleiche Tabellen, anderes Objekt), um nur eine Teilmenge der Werte zu laden.
Verschieben Sie die selten verwendeten Daten in eine zweite Tabelle.
Laden Sie Ihre Objekte mit einer benutzerdefinierten nativen SQL-Abfrage. Hier müssen Sie sicherstellen, dass Sie wissen, wie viel geladen wurde und wie Sie die Lücken füllen.
Das Hibernate-Referenzdokument enthält ein Kapitel Improving Performance. Sie können sich Ihre Abrufstrategien ansehen, oder ob die Verwendung von Caching die Leistung verbessert.
Um genauer zu sein, müssten Sie mehr Details zu Ihrer Anwendung angeben und wie die über ORM geladenen Objekte verwendet werden.
Verwenden Sie in Ihrer Entitätszuordnung FetchType.LAZY. d.h .:
@Entity
public class MyEntity {
private List<MyAnotherEntity> values;
@ManyToOne(fetch = FetchType.LAZY)
public List<MyAnotherEntity> getValues() {
return values;
}
}
dann, wenn Sie Einheit mit Kriterien wählen Sie Modus müssen holen, wenn Sie Ihre Sammlung müssen in Objekt abgebildet werden.
Criteria c = createCreteria(entityManager, MyEntity.class);
c.setFetchMode("values", FetchMode.JOIN);
- 1. Können wir das Laden von Javascript vom Benutzer verstecken?
- 2. Wie können wir ein Objekt jederzeit laden?
- 3. Reduzieren unnötige geschweifte Klammern die Leistung?
- 4. Welche Arten von Objekten können wir im Ansichtszustand platzieren?
- 5. Können wir wie das Keyword Documentdb verwenden?
- 6. Können wir ein Java-Mitglied schmerzlos lazy laden, ähnlich wie wir es mit statischen Singletons können?
- 7. Können wir Code optimieren, um den Stromverbrauch zu reduzieren?
- 8. Wie können wir das Entwicklungsprotokoll von Rails beobachten?
- 9. Wie können wir timeOut einstellen, wenn nicht wissen, wie lange das Laden der Seite dauern wird
- 10. Wie können wir Tweets von bestimmtem Land
- 11. Wie können wir HTML-Datei von rspec
- 12. Können wir das Verhalten des Klassenobjekts überladen
- 13. können wir das in C++ schreiben?
- 14. JQuery: Wie können wir Int von Variable
- 15. Wie können wir Kibana abfragen?
- 16. Wie entsteht "nicht etwas, das wir zusammenführen können"?
- 17. Wie können wir das Layout programmatisch in Android verstecken?
- 18. können wir dieselbe Komponente mit verschiedenen URLs erneut laden?
- 19. Wie können wir das smb-Protokoll in Qt verwenden?
- 20. iPad Einstellungen Bildschirm im Hochformat, Wie können wir das erreichen?
- 21. Wie können wir das Dock-Icon auf dem Mac bouncen?
- 22. Wie können wir das Passwort in Croogo entschlüsseln?
- 23. Wie können wir das Google-Logo auf Google Maps ändern?
- 24. Wie können wir das Passwort des Systems mit Java erhalten?
- 25. Dynamisches Laden von gemeinsamen Objekten mit dlopen()
- 26. PHP Lazy Laden von Objekten und Abhängigkeitsinjektion
- 27. Laden von reaktiven Objekten in Shiny
- 28. Können wir grundlegende JavaScript-Funktion in einem Webview laden?
- 29. Wie können wir Caching sicherstellen, um Dateisystem-Schreibzyklus für SQLite-Datenbanken zu reduzieren
- 30. Reduzieren Sie ein Array von Objekten zu den "besten 10"
Normalerweise werden abhängige Objekte geladen, die die ORM-Leistung beeinträchtigen. Sie müssen die Aggressivität Ihrer Abrufrichtlinien festlegen, je nachdem, wie wahrscheinlich es ist, dass Sie eine untergeordnete Eigenschaft benötigen, die einen anderen Abruf auslöst. Ein Personenobjekt, das beispielsweise ein Address-Objekt oder eine Orders-Auflistung abruft. Adresse wird wahrscheinlich benötigt, also lade sie, aber Befehle, vielleicht nicht, also sei weniger aggressiv. –