Cet article indique aux questions de test écrit d'entretien classiques et à leurs réponses de référence. Partagez-le pour votre référence, comme suit:
1. Comment fonctionne l'hibernate et pourquoi devrait-il être utilisé?
principe:
1. Fichiers de configuration de lecture et d'analyse
2. Lire et analyser les informations de cartographie et créer une sessionfactory
3. Session ouverte
4. Créer une transation de transaction
5. opération de persistance
6. Soumettre les transactions
7. Session de fermeture
8. Fermer SestionFactory
Pourquoi utiliser:
①. Le code pour JDBC accédant aux bases de données a été encapsulé, simplifiant considérablement le code répétitif lourd dans la couche d'accès aux données.
②. Hibernate est un cadre de persistance grand public basé sur JDBC et est une excellente implémentation ORM. Il simplifie considérablement le travail de codage de la couche Dao dans une large mesure
③. Hibernate utilise le mécanisme de réflexion Java, plutôt que les programmes d'amélioration de ByteCode pour atteindre la transparence.
④. Hibernate fonctionne très bien car c'est un cadre léger. La flexibilité de la cartographie est excellente. Il prend en charge diverses bases de données relationnelles, de l'une à un à plusieurs à de nombreuses relations complexes.
2. Comment le chargement hibernate est-il en retard?
①. Implémentation de chargement de retard HiberNate2: A) Objet d'entité b) Collection (Collection)
②. HiberNate3 fournit la fonction de chargement retardée des attributs. Lorsque Hibernate Querys Data, les données n'existent pas et la mémoire. Lorsque le programme fonctionne vraiment sur les données, l'objet existe et la mémoire, ce qui réalise le chargement retardé. Il enregistre la surcharge de mémoire du serveur et améliore ainsi les performances du serveur.
3. Comment mettre en œuvre la relation entre les classes en hibernate? (comme une relation un-à-plusieurs et plusieurs à plusieurs)
La relation entre les classes se reflète principalement dans la relation entre les tables. Ils opèrent sur des objets de la ville. Notre programme met tous les tables et classes ensemble, et ils sont passés par plusieurs à un, un-à-plusieurs, plusieurs à plusieurs et plusieurs à plusieurs dans le fichier de configuration.
4. Parlons du mécanisme de cache d'Hibernate
①. Le cache interne est également appelé cache de premier niveau en hibernate, qui appartient au cache au niveau de l'application
②. Cache de niveau 2:
a) Application et cache
b) Conditions de cache distribuées: les données ne seront pas modifiées par des tiers, la taille des données se situe dans une plage acceptable, la fréquence de mise à jour des données est faible, les mêmes données sont fréquemment utilisées par le système et les données non critiques
c) Mise en œuvre d'un cache tiers
5. Méthode de requête hibernate
SQL, critères, comptposition d'objets
HQL:
1. Requête d'attribut
2. Requête paramètre, question de paramètre nommée
3. Requête connexe
4. Requête de pagination
5. Fonctions statistiques
6. Comment optimiser l'hibernate?
①. Utilisez une association bidirectionnelle un-à-plusieurs, pas un à plusieurs un-à-plusieurs ②. Utilisez une association un-à-plusieurs un-à-plusieurs ③. N'utilisez pas un à un, utilisez plusieurs à un à la place ④. Configurez le cache d'objet, n'utilisez pas le cache set ⑤. Utilisez un sac pour les collections un-à-plusieurs et utilisez un ensemble pour les collections plusieurs-à-plusieurs.
⑥. Utilisez le polymorphisme explicite dans les classes d'héritage⑦. Il devrait y avoir moins de champs de table et n'ayez pas peur de nombreuses associations de table. Il y a un cache secondaire pour vous soutenir.
7. Mécanisme de travail des entretoises? Pourquoi utiliser des jambes de force?
Mécanisme de travail:
Struts du flux de travail:
L'ActionServlet d'initialisation sera chargé au démarrage de l'application Web. L'Actionservlet sera chargé de
Lisez les informations de configuration à partir du fichier Struts-Config.xml et stockez-les dans divers objets de configuration
Lorsque l'Actionservlet reçoit une demande client, le processus suivant sera exécuté.
- (1) Récupérer l'instance deMapping Action qui correspond à la demande de l'utilisateur. S'il n'existe pas, il renvoie les informations non valides du chemin de demande;
- (2) Si l'instance ActionForm n'existe pas, créez un objet ActionForm et enregistrez les données de formulaire soumises par le client à l'objet ActionForm;
- (3) Décidez si la vérification du formulaire est nécessaire en fonction des informations de configuration. Si une vérification est requise, appelez la méthode Validate () de ActionForm;
- (4) Si la méthode Validate () d'action formelle renvoie NULL ou renvoie un objet Actuiberrors qui ne contient pas d'actionMessage, cela signifie que la vérification du formulaire est réussie;
- (5) L'ActionServlet décide quelle action pour transmettre la demande en fonction des informations de mappage contenues dans ActionMapping. Si l'instance d'action correspondante n'existe pas, créez d'abord cette instance, puis appelez la méthode Execute () de l'action;
- (6) La méthode EXECUTE () de l'action renvoie un objet ActionForward, et l'actionservlet transfère la demande du client au composant JSP pointé par l'objet ActionForward;
- (7) L'objet ActionForward pointe vers le composant JSP pour générer une page Web dynamique et le renvoie au client;
Pourquoi utiliser:
L'émergence des technologies JSP, Servlet et Javabean nous offre la possibilité de construire de puissants systèmes d'application d'entreprise. Mais le système construit avec ces technologies est très chaotique, donc en plus de cela, nous avons besoin d'une règle et d'une règle pour organiser ces technologies. C'est le cadre, et les entretoises ont vu le jour.
Les applications développées sur la base des entretoises sont composées de trois types de composants: composants du contrôleur, composants du modèle et composants de vue
8. Comment la validation du cadre de Struts est-elle validée?
Configurez des invites d'erreur spécifiques dans le fichier de configuration de Struts, puis appelez la méthode validate () dans le formbean.
9. Parlons du modèle de conception de Struts
Mode MVC: ActionServler est chargé et initialisé au démarrage de l'application Web. Lorsque l'utilisateur soumet un formulaire, un objet ActionForm configuré est créé et rempli les données correspondantes du formulaire. L'ActionServler décide si la vérification de formulaire est nécessaire en fonction des paramètres configurés par le fichier Struts-Config.xml. Si nécessaire, appelez la vérification Validate () de ActionForm et sélectionnez à quelle action à envoyer la demande. Si l'action n'existe pas, l'Actionservlet créera d'abord cet objet, puis appellera la méthode EXECUTE () de l'action. Execute () obtient des données de l'objet ActionForm, complète la logique métier et renvoie un objet ActionForward. L'ActionServlet transmet la demande du client au composant JSP spécifié par l'objet ActionForward. Le JSP spécifié par l'objet ActionForward génère une page Web dynamique et le renvoie au client.
10. Mécanisme de travail du printemps et pourquoi?
①.
②.Dispatcherservlet requêtes un ou plusieurs handlermappings et trouve le contrôleur qui gère la demande.
③.Dispatcherservlet Veuillez soumettre la demande au contrôleur cible
④. Une fois que le contrôleur a effectué le traitement de la logique métier, il renverra un modelandView.
⑤. L'objet View est responsable du rendu et du retour au client.
Pourquoi utiliser:
{AOP permet aux développeurs de créer des préoccupations non comportementales, appelées préoccupations croisées et de les insérer dans le code d'application. Après avoir utilisé AOP, les services publics (tels que les journaux, la persistance, les transactions, etc.) peuvent être décomposés en aspects et appliqués aux objets de domaine sans augmenter la complexité du modèle d'objet des objets de domaine.
L'IOC permet de créer un environnement d'application où des objets peuvent être construits, puis de passer leurs objets collaboratifs à ces objets. Comme le mot inversion l'indique, le CIO est comme l'inverse JNDI. Sans utiliser un tas d'usines abstraites, de localisateurs de services, de singletons et de construction droite, chaque objet est construit avec ses objets collaboratifs. Par conséquent, le collaborateur est géré par le conteneur.
Le printemps est un conteneur IOC même s'il s'agit d'un framework AOP. La meilleure chose à propos du printemps est qu'il vous aide à remplacer les objets. Avec le printemps, il suffit d'ajouter des dépendances (objets de collaboration) à l'aide de propriétés et de fichiers de configuration de Javabean. Les objets de collaboration avec des interfaces similaires peuvent ensuite être facilement remplacés en cas de besoin. }
Le cadre de ressort est une architecture hiérarchique composée de 7 modules bien définis. Les modules de printemps sont construits sur des conteneurs de base qui définissent comment les haricots sont créés, configurés et gérés.
Chaque module (ou composant) qui constitue le cadre de ressort peut exister seul ou être implémenté en conjonction avec un ou plusieurs autres modules. Les fonctions de chaque module sont les suivantes:
☆ Contaiteur central: le conteneur de noyau fournit les fonctions de base du cadre de ressort. Le composant principal du conteneur central est Beanfactory, qui est une implémentation du modèle d'usine. BeanFactory utilise le mode d'inversion du contrôle (IOC) pour séparer les spécifications de configuration et de dépendance d'une application à partir du code d'application réel.
☆ Contexte de ressort: le contexte de printemps est un fichier de configuration qui fournit des informations de contexte au framework Spring. Spring Context comprend des services d'entreprise tels que JNDI, EJB, e-mail, internationalisation, capacités de planification de somme de contrôle.
☆ Spring AOP: via la fonction de gestion de la configuration, le module Spring AOP intègre directement les fonctions de programmation orientées vers l'aspect dans le framework Spring. Par conséquent, il est facile de créer un objet géré par Spring Framework Support AOP. Le module Spring AOP fournit des services de gestion des transactions pour les objets dans les applications basées sur Spring. En utilisant Spring AOP, la gestion des transactions déclaratives peut être intégrée à l'application sans s'appuyer sur les composants EJB.
☆ Spring DAO: La couche d'abstraction JDBC DAO fournit une hiérarchie d'exception significative qui peut être utilisée pour gérer la gestion des exceptions et les messages d'erreur lancés par différents fournisseurs de base de données. La hiérarchie d'exception simplifie la gestion des erreurs et réduit considérablement la quantité de code d'exception qui doit être rédigé (comme les connexions d'ouverture et de fermeture). Les exceptions orientées JDBC de Spring DAO suivent la hiérarchie des exceptions DAO commune.
☆ Spring ORM: Le framework Spring insère plusieurs frameworks ORM, fournissant ainsi des outils de relation d'objet ORM, y compris JDO, Hibernate et Ibatis SQL Map. Tout cela suit la transaction commune de Spring et la hiérarchie des exceptions DAO.
☆ Module Web Spring: le module de contexte Web est construit sur le module de contexte d'application et fournit un contexte pour les applications Web. Par conséquent, le framework Spring prend en charge l'intégration avec Jakarta Struts. Le module Web simplifie également le travail de gestion des demandes en plusieurs parties et des paramètres de demande de liaison aux objets de domaine.
☆ Spring MVC Framework: Le cadre MVC est une implémentation MVC entièrement fonctionnelle pour la création d'applications Web. Grâce à l'interface de stratégie, le cadre MVC devient très configurable et MVC abrite un grand nombre de technologies de vue, y compris JSP, Velocity, Tiles, Itext et POI.
Les capacités du Spring Framework peuvent être utilisées dans n'importe quel serveur J2EE, et la plupart d'entre elles conviennent aux environnements non gérés. Le point central du printemps est: Prise en charge des objets d'accès commerciaux et de données réutilisables qui ne sont pas liés à des services J2EE spécifiques. Il ne fait aucun doute que ces objets peuvent être réutilisés entre différents environnements J2EE (Web ou EJB), des applications autonomes, des environnements de test.
IOC et AOP
Le concept de base du contrôle des modèles d'inversion (également connu sous le nom d'intervention de dépendance) est de ne pas créer d'objets, mais de décrire comment ils sont créés. Il ne se connecte pas directement aux objets et aux services dans le code, mais décrit quel composant nécessite quel service dans le fichier de configuration. Les conteneurs (conteneurs IOC dans Spring Framework) sont responsables de les lier ensemble.
Dans un scénario IOC typique, le conteneur crée tous les objets et définit les propriétés nécessaires pour les connecter ensemble, décidant quand la méthode est appelée. Le tableau suivant répertorie un modèle d'implémentation de l'IOC.
Le conteneur IOC du Spring Framework est implémenté à l'aide de type 2 et de type 3.
Programmation orientée vers l'aspect
La programmation axée sur l'aspect, AOP, est une technique de programmation qui permet aux programmeurs de modulariser les comportements qui traversent les préoccupations ou les lignes de responsabilité de division typiques (telles que la journalisation et la gestion des transactions). La construction principale de l'AOP est l'aspect, qui résume ces comportements qui affectent plusieurs classes en modules réutilisables.
AOP et IOC sont des technologies complémentaires, qui utilisent toutes deux des approches modulaires pour résoudre des problèmes complexes dans le développement d'applications d'entreprise. Dans un développement typique orienté objet, des instructions de journalisation peuvent être nécessaires pour placer dans toutes les méthodes et classes Java pour implémenter les fonctionnalités de journalisation. Dans l'approche AOP, les services de journaux peuvent être modularisés à leur tour et appliqués de manière déclarative aux composants qui nécessitent des journaux. Bien sûr, l'avantage est que les classes Java n'ont pas besoin de connaître l'existence de services de journal, et ils n'ont pas besoin de considérer le code pertinent. Par conséquent, le code d'application écrit dans Spring AOP est lâchement couplé.
La fonctionnalité de l'AOP est pleinement intégrée dans le contexte de la gestion des transactions, de la journalisation et de diverses autres fonctionnalités.
Récipient IOC
Au cœur de la conception du printemps se trouve le package org.springframework.beans, conçu pour être utilisé avec les composants de Javabean. Ce package n'est généralement pas utilisé directement par l'utilisateur, mais par le serveur l'utilisant comme intermédiaire sous-jacent pour la plupart des autres fonctions. L'abstraction la plus avancée la plus avancée est l'interface Beanfactory, qui est une implémentation du modèle de conception d'usine qui permet de créer et de récupérer des objets et de récupérer par des noms. BeanFactory peut également gérer les relations entre les objets.
BeanFactory prend en charge deux modèles d'objets.
□ Le modèle Singleton fournit des instances partagées d'objets avec des noms spécifiques qui peuvent être récupérés lors de l'interrogation. Singleton est le modèle d'objet par défaut et le plus souvent utilisé. Idéal pour les objets de service sans état.
□ Le modèle de prototype garantit que les objets séparés sont créés chaque fois qu'ils sont récupérés. Les prototypes sont les mieux adaptés lorsque chaque utilisateur a besoin de son propre objet.
Le concept d'usine de haricots est la base du printemps en tant que conteneur IOC. Le CIO change la responsabilité de gérer les choses du code d'application aux cadres. Comme je vais le démontrer dans l'exemple suivant, le Spring Framework utilise les propriétés JavaBean et les données de configuration pour indiquer les dépendances qui doivent être définies.
Interface haricotrice
Étant donné que org.springframework.beans.factory.beanfactory est une interface simple, il peut être implémenté pour diverses méthodes de stockage sous-jacentes. La définition de Beanfactory la plus couramment utilisée est XMLBeanFactory, qui charge les beans en fonction des définitions dans les fichiers XML, comme indiqué dans la liste 1.
Listing 1. XMLBeanFactory
Beanfactory factory = new xmlbeanfactory (new FileInputStream ("myBean.xml"));Les haricots définis dans les fichiers XML sont chargés négativement, ce qui signifie que le bean lui-même ne sera pas initialisé tant qu'il n'est pas nécessaire. Pour récupérer un haricot de Beanfactory, appelez simplement la méthode getbean () et passez au nom du haricot à récupérer, comme indiqué dans la liste 2.
Listing 2. Getbean ()
MyBean Mybean = (MyBean) Factory.getBean ("Mybean");La définition de chaque haricot peut être soit un POJO (défini avec le nom de la classe et la propriété d'initialisation de JavaBean) ou un FactoryBean. L'interface FactoryBean ajoute un niveau indirect aux applications construites à l'aide du framework Spring.
Exemple IOC
La façon la plus simple de comprendre l'inversion de contrôle est de examiner son application pratique. En résumant la partie 1 de la série Spring en trois parties, j'ai utilisé un exemple qui montre comment injecter les dépendances d'une application via des conteneurs Spring IOC (plutôt que de les construire).
J'utilise le cas d'utilisation de l'ouverture d'un compte de crédit en ligne comme point de départ. Pour cette implémentation, l'activation d'un compte de crédit nécessite que l'utilisateur interagisse avec les services suivants:
☆ Service d'évaluation du niveau de crédit, interrogation des informations sur les antécédents de crédit de l'utilisateur.
☆ Service de liaison des informations à distance, insérez les informations des clients, connectez les informations du client avec la carte de crédit et les informations bancaires pour le débit automatique (si nécessaire).
☆ Service de messagerie, envoi des e-mails des utilisateurs sur l'état de la carte de crédit.
Trois interfaces
Pour cet exemple, je suppose que les services existent déjà, et idéalement, il s'agit de les intégrer de manière lâche. La liste suivante montre les interfaces du programme d'application pour les trois services.
Listing 3. CreditRatingInterface
Interface publique CreditRatingInterface {public boolean getUserCredithistoryInformation (icustomer icustomer);}L'interface d'évaluation du niveau de crédit présentée dans Listing 3 fournit des informations sur les antécédents de crédit. Il nécessite un objet client contenant des informations client. L'implémentation de cette interface est fournie par la classe de crédit.
Listing 4. CreditLinkingInterface
Interface publique CreditLinkingInterface {public String getUrl (); public void serUrl (URL de chaîne); public void linkcreditbankaccount () lève une exception;}L'interface de liaison de crédit relie les informations sur les antécédents de crédit aux informations bancaires (si nécessaire) et insère les informations de carte de crédit de l'utilisateur. L'interface de liaison de crédit est un service distant et sa requête est effectuée via la méthode getUrl (). L'URL est définie par le mécanisme de configuration des haricots du framework Spring, dont je discuterai plus tard. L'implémentation de cette interface est fournie par la classe CreditLinking.
Listing 5. EmailInterface
Interface publique EmailInterface {public void SendEmail (icustomer icustomer); public string getFromemail (); public void setFromemail (String fromEmail); public string getpassword (); public void SetPassword (String Motway); public String String GetUserId ()J'espère que cet article sera utile à la programmation Java de tous.