Maison  >  Article  >  Java  >  Quel est le principe et le processus du framework ssh

Quel est le principe et le processus du framework ssh

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼original
2019-07-25 14:41:476507parcourir

Quel est le principe et le processus du framework ssh

Projet de framework SSH (Struts2+Spring+Hibernate), l'architecture est principalement divisée en trois niveaux :

(1) Struts2 : responsable de la couche web

(2) Spring : gestion de la couche métier

(3) Hibernate : responsable de la persistance des données

Principe de fonctionnement de Struts2 :

1. Initialisez une requête pointant vers le conteneur de servlet.

2. La requête est filtrée par le filtre configuré dans web.xml, et le FilterDispatcher (le cœur du contrôleur struts2) demande à l'ActionMapper s'il doit appeler une action pour gérer la requête. Si ActionMapper décide qu'une action doit être appelée, FilterDispatcher transmet le traitement des demandes à ActionProxy.

3. ActionProxy trouve la classe Action qui doit être appelée via le fichier de configuration Struts.xml.

4.ActionProxy crée une instance ActionInvocation et ActionInvocation appelle Action via le mode proxy. Mais avant d'appeler, ActionInvocation chargera tous les intercepteurs (intercepteurs) liés à l'action en fonction de la configuration.

5. Une fois l'action exécutée, ActionInvocation est chargé de trouver le résultat de retour correspondant en fonction de la configuration dans struts.xml.

C'est-à-dire que le développeur envoie une requête http. Cette requête est filtrée par le filtre de web.xml pour voir si une action doit être appelée. Si tel est le cas, la méthode pour implémenter la requête se trouve dans Struts. .xml, puis renvoyé Le résultat de l'opération.

Recommandations associées : "Tutoriel de développement Java"

Principe de fonctionnement d'Hibernate :

Lire et analyser le fichier de configuration.

2. Lire et analyser les informations de mappage, créer une SessionFactory

3. Session ouverte

4. Créer une transaction de transaction

5.

6. Soumettre la transaction

7. Fermer la session

8. Fermer SessionFactory

C'est-à-dire que xxx.hbm.xml est chargé lors de l'initialisation Hibernate gérée par Spring. lisez les informations de mappage d’analyse et créez une SessionFactory. Ensuite, ouvrez la session, faites fonctionner l'objet tout au long de la session et soumettez-le. Enfin, fermez la session et fermez SessionFactory.

Trois états des beans dans Hibernate

Les objets Hibernate sont divisés en trois états : l'état transitoire (nouveau ou indépendant de la session lorsqu'il est instancié), l'état persistant (associé à la session) et l'état libre (une fois associé à la séance). Parmi eux, les objets persistants sont des PO, et les objets transitoires et gérés peuvent être utilisés comme VO. (PO ne doit pas être utilisé directement comme couche v) Par conséquent, il convient de prêter attention à la conversion des trois états pendant l'utilisation.

Par exemple :


Dans une série d'opérations de données, l'opération de sauvegarde ou de sauvegarde ou de mise à jour peut convertir des objets transitoires ou libres en objets persistants, tandis que la suppression ou la fermeture de session, le vidage et d'autres opérations convertira l'objet d'état persistant associé à la session en un état libre.

L'état et le cycle de vie des objets Hibernate

L'objet initialisé à l'aide de l'opérateur new est un transitoire (Transient) (il n'y a pas de comportement associé à la table de la base de données, tant que l'application ne n'y fait plus référence) Le statut de ces objets sera perdu et recyclé par le mécanisme de garbage collection ;

Les objets transitoires seront convertis en objets persistants via save() et saveOrUpdate, qui seront gérés uniformément par le session. Les opérations des objets persistants sont les mêmes que pour la synchronisation de la base de données ;

L'objet persistant sera converti en état libre après evict(), close(), clear(), etc. il est persistant, il n'est pas dans le cache de session. Grâce à lock(), update(), saveOrUpdate sera converti en état persistant. Les objets obtenus via get(), load(), find() et iterate() sont directement persistants.

Comment fonctionne Spring :

Dans le framework SSH, spring joue le rôle de conteneur de gestion. Nous savons tous qu'Hibernate est utilisé comme couche de persistance, car il fournit une bonne encapsulation de JDBC et les programmeurs n'ont pas besoin d'écrire un grand nombre d'instructions SQL lorsqu'ils interagissent avec la base de données. Struts est utilisé comme couche d'application, qui est chargée d'appeler la couche de service de logique métier.

Le processus du framework SSH est donc grosso modo : Page Jsp ----Struts------Service (classe de traitement de logique métier) --- Hibernate (de gauche à droite)

struts Responsable du contrôle du Service (classe de traitement de logique métier), contrôlant ainsi le cycle de vie du Service. De cette façon, la dépendance entre les couches est très forte et est couplée.

À l'heure actuelle, l'utilisation du framework Spring joue le rôle de contrôle de l'objet Action (dans Strus) et de la classe Service. La relation entre les deux est lâche. Le mécanisme Ioc de Spring (inversion du contrôle et injection de dépendances). est utilisé ici.

Inversion de contrôle : le conteneur contrôle la relation (de dépendance) entre les programmes, au lieu de l'implémentation traditionnelle, qui est directement contrôlée par le code du programme.

Injection de dépendances : les dépendances entre les composants sont déterminées par le conteneur pendant l'exécution, et le conteneur injecte dynamiquement certaines dépendances dans les composants.

Le deuxième avantage de l'utilisation de Spring (application AOP) :

Traitement des transactions :

Dans le modèle JDBC précédent, la transaction a été soumise avec succès et la gestion des exceptions a été effectuée via Try/Catch. Le conteneur Spring intègre TransactionTemplate, qui encapsule toutes les fonctions de traitement des transactions, y compris l'annulation des transactions lorsque des exceptions se produisent, la soumission de données lorsque les opérations réussissent et d'autres fonctions commerciales complexes. Tout cela est géré par le conteneur Spring, ce qui réduit considérablement la quantité de code pour les programmeurs et offre une bonne gestion et un bon contrôle des transactions. Hibernate dispose également d'une gestion des transactions. La gestion des transactions en veille prolongée est réalisée en créant et en maintenant une session via SessionFactory. Spring a également intégré la configuration SessionFactory, et il n'est pas nécessaire de définir SessionaFactory via hibernate.cfg.xml.

De cette façon, vous pouvez faire bon usage des puissantes fonctions de gestion des transactions de Sping.

Cela évite d'avoir besoin d'obtenir une instance de session pour démarrer la transaction/soumettre/annuler la transaction et l'opération fastidieuse Try/Catch à chaque fois que les données sont exploitées.

Ce sont de bonnes applications du mécanisme AOP (programmation orientée aspect) de Spring. D’une part, cela rend le développement de la logique métier plus clair et la division professionnelle du travail plus facile.

D'autre part, l'application de l'isolation Spirng AOP réduit le couplage du programme, nous permettant de combiner divers aspects dans différentes applications, ce qui améliore grandement la réutilisation du code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn