2009-09-15 7 views
1

Je suis un débutant dans Hibernate.Native stocké v/s Hibernate

Je travaille sur une couche d'accès aux données du service cloud.

Actuellement, nous utilisons Hibernate pour le mappage OU et comme couche d'accès aux données en utilisant les annotations Hibernate. Mais dernièrement, on m'a demandé de mettre en œuvre la couche Hibernate/Data Access de telle sorte que mes procédures stockées soient en HQL et que nous puissions modifier notre base de données à court terme et porter notre code entier.

Le plus proche que je peux penser à cet égard est en utilisant des requêtes nommées, où les procédures stockées sont côté DB et mon hibernate résout les appels de procédure stockée en utilisant des requêtes nommées.

La raison de tout cela est que, puisque les procédures stockées sont précompilées, elles offrent une bonne performance et une bonne optimisation de la sécurité pour une implémentation de service cloud de grande taille. Actuellement, j'utilise java, hibernate et Mysql. Est-ce que quelqu'un peut examiner mes hypothèses et valider ou donner/suggérer de meilleures alternatives.

Les performances et la sécurité sont la priorité absolue.

+0

Les arguments à ce sujet sont déjà largement discutés dans SO, principalement cette question: http://stackoverflow.com/questions/274411/do-stored-procedures-really-boost-performance-in-ms-sql-net, mais ils parler de SQL Server. Voir aussi: http://stackoverflow.com/questions/50346/why-is-parameterized-sql-generated-by-nhibernate-just-as-fast-as-a-stored-procedu. Pour l'ensemble de l'enchalada, consultez: http://stackoverflow.com/search?q=nhibernate+stored+procedure+performance –

Répondre

1

Je pense que l'approche que vous avez décrite est excellente.

C'est exactement ce que je ferais si j'étais dans votre position. (Je suis sur Hibernate soutenu par MySql aussi, et j'ai envisagé de le faire si nécessaire pour des raisons de performances.)

1

Comme l'analyse et l'optimisation des instructions sont rapides avec le plus de SGBD, je préfère ne pas utiliser de procédures stockées si mon application est le «propriétaire» du (des) catalogue (s).

Avec des procédures stockées, la migration et la maintenance peuvent devenir plus difficiles, ce qui surpasse les petites performances minimes.

cas où je vois les avantages des procédures stockées:

  • Je ne suis pas le propriétaire de la base de données. L'accès aux données est fourni par les développeurs/mainteneurs de bases de données (comme vous le trouvez souvent dans les Datawarehouses). Les procédures stockées sont donc une interface avec les données.
  • Les instructions sont complexes et le moteur d'exécution est imprévisible ou ne devrait pas avoir d'effets sur mon application (comme le déclenchement de transactions longues ou de lots).

J'espère que cela vous aidera dans votre décision.