1. Verrouillage pessimiste et optimiste en veille prolongée
(plus de recommandations de questions d'entretien : questions et réponses d'entretien Java )
Verrou pessimiste Hibernate : verrouille les données lorsqu'elles sont chargées. Ce n'est que lorsque le verrou est libéré que les autres utilisateurs peuvent apporter des modifications. Avantages : La cohérence des données est très bien maintenue. Inconvénients : Ne convient pas à un accès simultané. plusieurs utilisateurs. Lorsqu'une ressource verrouillée n'est pas libérée, la ressource ne sera jamais modifiée par d'autres utilisateurs, provoquant facilement une attente indéfinie.
Verrouillage optimiste Hibernate : lorsque les données sont modifiées, les données sont comparées à la version ou à l'horodatage pour voir si les données sont cohérentes pour réaliser le verrouillage. Les avantages sont relativement bons.
2. Trois états de mise en veille prolongée
État temporaire : le nouvel objet n'a pas encore été persistant et n'est pas encore dans la session
État persistant : Déjà Persistance, ajouté au cache de session, l'objet dans cet état est appelé objet persistant
État libre : l'objet persistant est séparé de l'objet Session. Tels que les objets dont le cache de session a été vidé. Caractéristiques : Déjà persistant, mais pas dans le cache de session. Les objets dans cet état sont appelés objets libres ;
(Tutoriels associés recommandés : Tutoriel d'introduction à Java)
3. La différence entre hibernate et ibatis
ibatis : les projets open source sont faciles à démarrer, flexibles dans le développement et ont une lourde charge de travail de développement. La plupart d'entre eux écrivent leur propre SQL et disposent de nombreux fichiers de configuration
Hibernate : un open source. Cadre de mappage objet-relationnel source, avec une efficacité de développement élevée, mais il ne peut pas interférer avec SQL, moins optimisé
4 Parlez du pool de connexions mybatis
Pools de connexions mybatis courants. incluent native, c3p0 et dbcp, qui sont créés via l'interface DataSource en mode usine, ses implémentations incluent unpooledDataSource (source de données sans pool de connexions) et PooledDataSource (source de données avec pool de connexions), qui peuvent être obtenues via l'objet de classe d'usine correspondant
Prenons PooledDataSource comme exemple Premièrement : vous avez besoin d'un objet pour vous connecter à la base de données et obtenez l'objet de connexion java.sql.Connection lors de l'exécution de l'instruction SQL Deuxièmement : la source de données PooledDataSource s'enroule l'objet Pool de connexion dans un objet PooledConnection et le place dans un conteneur de type PoolState. MyBatis divise le pool de connexions dans le pool de connexions en deux états : l'état inactif (idle) et l'état actif (actif). Les objets PooledConnection sont stockés dans deux collections List, ralentieConnections et activeConnections, dans le conteneur PoolState : In. À l'état inactif, l'objet PooledConnection est placé dans la collection ralentieConnections, qui représente la collection PooledConnection actuellement inactive qui n'est pas utilisée. Lorsque la méthode getConnection() de PooledDataSource est appelée, l'objet PooledConnection sera d'abord extrait de cette collection. Lorsqu'un objet java.sql.Connection est épuisé, MyBatis l'enveloppera dans un objet PooledConnection et le placera dans cette collection. Dans l'état actif, l'objet PooledConnection est placé dans la ArrayList nommée activeConnections, indiquant la collection PooledConnection actuellement utilisée. Lorsque la méthode getConnection() de PooledDataSource est appelée, elle sera d'abord extraite de la collection ralentieConnections. . Objet PooledConnection, sinon, vérifiez si cette collection est pleine. Sinon, PooledDataSource créera un PooledConnection, l'ajoutera à cette collection et reviendra (Recommandation du didacticiel vidéo : 5. Comment fonctionne SpringMVCL'utilisateur envoie une requête, qui est capturée et interceptée par le contrôleur frontal DispatcherServlet
DispatcherServlet appelle HandlerMapping pour le traitement L'objet de gestion de mappage du gestionnaire obtient le processeur Handler
DispatcherServlet obtient l'adaptateur HandlerAdpter approprié en fonction du gestionnaire, et HttpMessageConveter convertit les informations de demande en objet de réponse spécifié ;
Avec l'adaptateur, remplissez les paramètres de la requête. Après avoir atteint le gestionnaire, Spring commence à exécuter le gestionnaire (contrôleur) pour les opérations de conversion de données, de vérification des données et de formatage des données.
Une fois le gestionnaire exécuté, un objet ModelAndView est renvoyé. au DispatcherServlet ;
Selon le ModelAndView renvoyé, choisissez un résolveur de vue ViewResolver approprié et recherchez la vue spécifiée par ModelAndView ;
ViewResolver combine Model et View pour restituer et afficher la page ;
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!