2009-08-05 3 views
4

J'ai une méthode qui retourne beaucoup de données, dois-je utiliser @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) pour cette méthode. La méthode effectue une requête JPA et charge le contenu complet d'une table (environ 1000 lignes).EJB 3 Attribut de transaction pour la méthode en lecture seule

+0

Le bean sans état renvoie ou traite seulement 1000 lignes? –

+0

retourne juste, charge de la base de données et retourne –

Répondre

3

Le client de cette méthode - est-ce déjà dans une transaction? Lorsque vous utilisez NotSupported, la transaction de l'appelant sera suspendue. Si ce n'est pas le cas, il suffit de mettre Never comme type de transaction. Jamais n'est mieux puisque les appelants savent qu'ils ne sont pas censés appeler cette méthode à l'intérieur d'une transaction. Un contrat plus simple.

Nous utilisons toujours Jamais pour les méthodes qui font plus de traitement de sorte que les développeurs sont immédiatement conscients de ne pas appeler s'ils sont déjà impliqués dans une transaction. J'espère que cela aide.

2

Je voudrais ne pas être d'accord car il arrive rarement que l'utilisateur n'est pas dans une transaction presque tous les systèmes. La meilleure approche consiste à utiliser NON SOUTENU de sorte que la transaction est suspendue si l'appelant est déjà dans une transaction. Jamais est gênant sauf si vous avez une série d'appels qui sont tous dans la portée de NO TRANSACTION. En résumé, NOT SUPPORTED est le type que l'on devrait utiliser.

Questions connexes