Ich arbeite in einer Spring, Java, Hibernate, PostgreSQL Umgebung. Ich sehe eine ziemlich schwere Langsamkeit in meiner Datenbank. Meine spezifische Frage ist, wie schlecht es ist, wenn ich Spring @Transactional
Annotation zu einer Klasse hinzufüge, die Methoden enthält, die die Datenbank nicht treffen? Mit anderen Worten, sie erfordern keine Transaktion. Angenommen, diese Methoden gehören zu den am häufigsten verwendeten Methoden.Unnötige Datenbanktransaktionen verursachen Langsamkeit?
So etwas wie dieses (nur ein Beispiel):
@Component
@Transactional
public class ProjectManager {
public String getProjectUrl(Project project) {
//simple logic that does not use the database
return "/my/url/" + project.getId();
}
}
Ich verstehe es viele Faktoren gibt, die Datenbank Langsamkeit verursachen kann. Ich frage mich nur, ob das eine riesige rote Flagge ist oder nicht so groß von einem Deal? Sollte ich diese Methoden herausziehen und in eine andere Klasse legen, die nicht mit @Transactional
gekennzeichnet ist?
TIA
Haben Sie irgendwelche Benchmarks für diese Methode mit und ohne die '@ Transactional' Annotation? –
* "Wie schlimm ist es, wenn ich die' 'Transactional' Annotation von Spring hinzufüge" * Sehr wenig, es sei denn, Sie haben den Code profiliert, der besagt, dass Sie dort ein Problem haben, und ich bezweifle es. – Andreas
Ich bin nicht 100% sicher, ob es helfen wird, aber [hier] (http://blog.jhades.org/how-does-spring-transactional-really-work/) können Sie eine Erklärung finden was genau passiert, wenn Sie '@ Transactional' verwenden – saljuama