Quoi utiliser Mode de rinçage 'Auto' ou 'Commit'
Comme mon titre de décrire, je suis de l'utilisation d'hibernate Auto
flush mode mécanisme dans mon application. Donc, quand j'ai modifier des données dans une hibernate objet persistant, il reflète automatiquement dans la base de données. Je ne veux pas de cela. J'ai donc trouvé une solution pour utiliser FlushMode Commit
à la place.
Donc, voici ma question:
- Est-il préférable d'utiliser
Commit
flush mode au lieu deAuto
? et - Quel est le sens de cette déclaration à partir de la documentation?
La Session est parfois vidées avant l'exécution de la requête dans l'ordre
pour vous assurer que les requêtes ne jamais revenir rassis état.
http://docs.jboss.org/hibernate/orm/3.5/javadoc/org/hibernate/FlushMode.html
source d'informationauteur commit
Vous devez vous connecter pour publier un commentaire.
Hibernate (et JPA) sont conçus pour détecter automatiquement et de conserver les modifications de la persistance des objets en base de données. Il n'y a pas de "sauver" opération.
Si vous ne voulez pas que les choses enregistré, vous devez utiliser des objets détachés. Soit utiliser un
StatelessSession
à charger, ou de l'appel détacher après le chargement de vos objets. Cela supprime de la surveillance qui enregistre automatiquement.Ne plaisante pas avec la chasse d'eau des paramètres, il va juste vous donner des maux de tête plus tard.
Lorsque votre application utilise des requêtes de la
FlushMode.COMMIT
sera probablement effectuer mieux car il ne sera pas rincer avant chaque session de la requête. Je sais que par javadoc il devrait se rincer session seulement lorsqu'il le faut mais de mon expérience FlushMode.S'ENGAGER effectue encore mieux en lecture seule sessions. Auto-flush ne veut pas dire que toute modification de l'objet persistant est immédiatement signalé à la base de données.Comme je l'ai écrit ci-dessus, lorsque FlushMode.AUTO (par défaut) est utilisé, la chasse session avant chaque requête (HQL, les Critères de requête SQL) à la base de données pour s'assurer de résultats contient toutes les entités ajoutées au cours de la session.