2010-10-27 10 views
2

Je viens de configurer @PersistenceContext (type = PersistenceContextType.EXTENDED) sur mes classes DAO pour obtenir un chargement paresseux sur le calque de vue (nécessaire pour l'obtenir) fermeture de la session pour cela) mais j'ai des problèmes avec 1 niveau de cache (j'imagine) .. Parce que l'objet est mis en cache même avec mes paramètres de cache de second niveau off. Après avoir désactivé le "type = PersistenceContextType.EXTENDED", le système n'a pas mis en cache l'objet mais a plongé dans les problèmes de chargement paresseux.Évitez les problèmes de cache de niveau 1 lors de l'utilisation de @PersistenceContext (type = PersistenceContextType.EXTENDED)

//@PersistenceContext(type=PersistenceContextType.EXTENDED)
@PersistenceContext privé EntityManager entityManager;

Y at-il un moyen de contrôler cela? J'ai vraiment besoin d'un chargement paresseux mais je ne veux pas que mon objet soit stocké dans un cache à 1 niveau à chaque fois.

grâce

+0

Oh désolé: J'utilise en veille prolongée hum JPA impl – Thiago

Répondre

1

Sauf si vous voulez vraiment utiliser un contexte de persistance étendue et vraiment comprendre ce que cela signifie (je ne veux pas être pédant, mais ce qui est important en tant que gestionnaire d'entités étendu a différents filetage, cycle de vie, et sémantique de gestion de la mémoire), ma suggestion serait d'utiliser le habitude OEIV (Open EntityManager in View) modèle pour résoudre votre problème de chargement paresseux.

Le ressort fournit deux implémentations de ce modèle avec un filtre (OpenEntityManagerInViewFilter) et un intercepteur (OpenEntityManagerInViewInterceptor). De la javadoc:

Destiné au modèle « Open EntityManager en vue », à savoir pour permettre le chargement paresseux vues web malgré les opérations originales déjà réalisées.

+0

, il fera ma persistance vivant avec le fil créé par une demande, je ne sais pas si cela peut causer des problèmes pour moi, mais il est probablement mieux que PersistenceContextType. ÉLARGI. Merci – Thiago