7 Stimmen

Was ergibt sich aus der Einstellung dieses TransactionAttributeType.NOT_SUPPORTED

Ich habe zufällig Beispiele gefunden, die dieses Konstrukt verwenden, obwohl ich mir nicht sicher bin, was ich damit erreichen kann.

Bedeutet das, dass alle Select-Anweisungen in einer zustandslosen EJB diesem Beispiel folgen sollten?

@Stateless
public class EmployeeFacade {
    @PersistenceContext(unitName="EmployeeService")
    EntityManager em;

    @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
    public List<Department> findAllEmployees() {
        return em.createQuery("SELECT e FROM Employee e",
        Employee.class)
        .getResultList();
    }

Was habe ich davon?

Gracias.

7voto

Mikko Maunu Punkte 40066

Was Sie bekommen, ist:

  1. Relativ formaler Weg, um zu sagen, dass Ihre Methode keine Transaktion benötigt (als Folge wissen Sie zum Beispiel, dass sie nicht persist, merge oder remove im EntityManager aufrufen wird).
  2. Möglicherweise Leistungsoptimierung in einigen Fällen.
    • Keine Notwendigkeit, eine Transaktion zu erstellen/zu übergeben. Gemäß Java EE 5 Tutorial : "Da Transaktionen mit Overhead verbunden sind, kann dieses Attribut die Leistung verbessern."
    • Nach anderen Quellen (z.B. Pro JPA 2) bietet es Implementierungen die Möglichkeit, keine verwaltet Entitäten überhaupt zu erstellen (was wahrscheinlich schwerer ist als die sofortige Erstellung losgelöster Entitäten).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X