JDBC de Spring Dao
L'objectif principal du support DAO (objet d'accès aux données) fourni par Spring est de faciliter l'utilisation de différentes technologies d'accès aux données de manière standard, comme JDBC, Hibernate ou JDO. Il vous permet non seulement de basculer facilement entre ces technologies de persistance, mais vous permet également de ne pas avoir à envisager de gérer des exceptions spécifiques dans diverses technologies lors du codage.
Pour faciliter l'utilisation de diverses technologies d'accès aux données telles que JDBC, JDO et Hibernate de manière cohérente, Spring fournit une classe DAO abstraite à étendre. Ces classes abstraites fournissent certaines méthodes à travers lesquelles vous pouvez obtenir des sources de données et d'autres informations de configuration liées à la technologie d'accès aux données que vous utilisez actuellement.
Classe de support DAO:
JDBCDAOSUPPort - La classe de base pour les objets d'accès aux données JDBC. Une source de données est requise et JDBCTemplate est fournie pour la sous-classe.
HiberNatedAosupport - La classe de base pour les objets d'accès aux données Hibernate. Une SessionFactory est requise et un hibernatetemplate est fourni pour la sous-classe. Vous pouvez également choisir d'initialiser directement en fournissant un hibernatetemplate, afin que ces derniers paramètres puissent être réutilisés, tels que SessionFactory, Mode Flush, Traduct, etc.
JDodaosupport - La classe de base pour les objets d'accès aux données JDO. Un PersistenceManagerFactory est nécessaire pour configurer et fournir JDOTEMPLAT pour les sous-classes.
Jpadaosupport - La classe de base pour les objets d'accès aux données JPA. Un entityManagerFactory est requis et jpatemplate est fourni pour les sous-classes.
Cette section examine principalement le support de Spring pour JDBCDAOSUPPort.
Voici un exemple:
Tableau de dépose si il existe un utilisateur; / * ==================================================================. / * ==========================================================================.
classe publique User {ID entier privé; nom de chaîne privé; Âge entier privé; public Integer getID () {return id; } public void setid (INGER ID) {this.id = id; } public String getName () {Nom de retour; } public void setName (string name) {this.name = name; } public Integer Getage () {Return Age; } public void Setage (entier Âge) {this.age = age; }} / ** * Créé par Intellij Idea. <br> * <b> Utilisateur </b>: Leizhimin <br> * <b> Date </b>: 2008-4-22 15:34:36 <br> * <b> Remarque </b>: Interface Dao * / interface publique Iuserdao {public Void insert (utilisateur utilisateur); Find (ID entier); } import javax.sql.datasource; import java.sql.connection; import java.sql.sqlexception; / ** * Créé par Intellij Idea. <br> * <b> Remarque </b>: classe de base Dao, fournissant une injection de source de données * / classe publique Basedao {private dataSource dataSource; public dataSource getDataSource () {return dataSource; } public void setDataSource (dataSource dataSource) {this.datasource = dataSource; } Connexion publique getConnection () {connexion conn = null; essayez {conn = dataSource.getConnection (); } catch (sqlexception e) {e.printStackTrace (); } return conn; }} / ** * Créé par Intellij Idea. <br> * <b> Utilisateur </b>: Leizhimin <br> * <b> Date </b>: 2008-4-22 15:36:04 <br> * <b> Remarque </b>: Implémentation Dao * / Classe publique Userdao EXTENDE BASEDA Implementations IuserDao {New JdbcTemplate Getjdbplate () IUSERDAO { JDBCTemplate (getDataSource ()); } public void insert (utilisateur utilisateur) {string name = user.getName (); int age = user.getage (). intValue (); // JDBCTemplate.Update ("INSERT IN USER (NAME, AGE)" // + "VALEURS ('" + Name + "'," + Age + ")"); String sql = "Insérer dans l'utilisateur (nom, âge) valeurs (?,?)"; getJDBCTemplate (). Update (SQL, nouvel objet [] {nom, âge}); } Utilisateur public Find (INTER ID) {List Rows = getJDBCTemplate (). QueryForList ("SELECT * FROM User Where id =" + id.intValue ()); Iterator it = rows.iterator (); if (it.hasnext ()) {map userMap = (map) it.next (); Entier i = nouveau entier (userMap.get ("id"). ToString ()); String name = usermap.get ("name"). ToString (); Entier Age = Nouveau entier (userMap.get ("Age"). ToString ()); Utilisateur utilisateur = nouveau utilisateur (); user.setid (i); user.setName (nom); user.setage (âge); RETOUR UTILISATEUR; } return null; }}<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Beans public "- // printemps / dtd bean / en" "http://www.springframework.org/dtd/spring-beans.dtd"> <anks> <bean id = "datasource" singleton = "true"> <filaferclaye ">" dilyclassn ">" dataSource "Singleton =" true "> <filaferclaye"> "Duttersname"> DataSource "Singleton =" True "> <filaftamed) <value> com.mysql.jdbc.driver </value> </ propriété> <propriété name = "url"> <value> jdbc: mysql: // localhost: 3306 / springdb </value> </ propriété> <propriété name = "username"> <value> root </value> </prewet> <propriété name = "mot de passe"> <value> leizhImin </ Value> <propriété Name = "Mot de passe"> <value> LeizhImin </ Value> <propriété Name = "Mot de passe"> <value> LeizHIMIN </ Value> <Propriété Name = "Mot de passe"> <value> <bean id = "basasedao" abstract = "true"> <propriété name = "dataSource"> <ref bean = "dataSource" /> </ propriété> </ bean> <bean id = "userdao" parent = "basasedao"> </ank> </ beans>
import org.springframework.context.ApplicationContext; import org.springframework.context.support.filesystemxmlapplicationContext; / ** * Créé par Intellij Idea. <br> * <b> Utilisateur </b>: Leizhimin <br> * <b> Date </b>: 2008-4-22 15:59:18 <br> * <b> Remarque </b>: Classe de test, client * / Public ClassCondaODEMO {public Static Void Main (String [] args) {ApplicationCon Context Context = New FileSystemXmlApplicationContext ("d: //_spring//src//com/lavasoft//springnote//ch05_jdbc03_temp//bean-jdbc-temp.xml"); Utilisateur utilisateur = nouveau utilisateur (); user.setName ("hahhah"); user.setAGE (Nouveau entier (22)); IUserdao userdao = (iuserdao) context.getBean ("userdao"); userdao.insert (utilisateur); user = userdao.find (nouvel entier (1)); System.out.println ("name:" + user.getName ()); }}
Résultats en cours:
LOG4J: avertissez aucun annexe ne peut être trouvé pour Logger (org.springframework.core.collectionfactory). LOG4J: avertissez correctement le système log4j. Nom: Processus JDBCTemplate terminé avec le code de sortie 0
Hibernate de Spring Dao
HiberNatedAosupport - La classe de base pour les objets d'accès aux données Hibernate. Une SessionFactory est requise et un hibernatetemplate est fourni pour la sous-classe. Vous pouvez également choisir d'initialiser directement en fournissant un hibernatetemplate, afin que ces derniers paramètres puissent être réutilisés, tels que SessionFactory, Mode Flush, Traduct, etc.
Cette section traite principalement du support de Spring pour HiberNateTEmplate.
Voici un exemple:
Tableau de dépose si il existe un utilisateur; / * ==================================================================. / * ==========================================================================.
/ ** * Créé par Intellij Idea. <br> * <b> Remarque </b>: Hiberante Entity Class * / public class User {private Integer id; nom de chaîne privé; Âge entier privé; public Integer getID () {return id; } public void setid (INGER ID) {this.id = id; } public String getName () {Nom de retour; } public void setName (string name) {this.name = name; } public Integer Getage () {Return Age; } public void Setage (entier Âge) {this.age = age; }}<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Hibernate-Mapping Public "- // Hibernate / Hibernate Mapping Dtd 3.0 // en" "http://hibernate.sourceforge name = "com.lavasoft.springnote.ch06_hbm_02detx.user" table = "utilisateur"> <id name = "id" chronn = "id"> <générateur /> </ id> <propriété name = "name" chronn = "name" /> <propriété name = "age" colmmn = "age"
/ ** * Créé par Intellij Idea. <br> * <b> Utilisateur </b>: Leizhimin <br> * <b> Date </b>: 2008-4-23 15:37:43 <br> * <b> Remarque </b>: Interface Dao * / interface publique Iuserdao {public Void Insert (utilisateur utilisateur); Find (ID entier); } import org.hibernate.sessionfactory; import org.springframework.orm.Hibernate3.HibernateTemplate; / ** * Créé par Intellij Idea. <br> * <b> Utilisateur </b>: Leizhimin <br> * <b> Date </b>: 2008-4-23 15:15:55 <br> * <b> Remarque </b>: Implémentation DAO * / Classe publique UserDao implémente IUSERDAO {private HiberNatetemplate HiberNatEemplate; public void setSessionFactory (SessionFactory SessionFactory) {this.hibernateTemplate = new HiberNateTemplate (sessionFactory); } public void insert (utilisateur utilisateur) {hibernatetemplate.save (utilisateur); System.out.println ("ID de l'objet utilisateur enregistré:" + user.getId ()); } utilisateur public find (INTER ID) {utilisateur utilisateur = (utilisateur) hibernatetemplate.get (user.class, id); RETOUR UTILISATEUR; }}<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Beans public "- // printemps / dtd bean / en" "http://www.springframework.org/dtd/spring-beans.dtd"> <anks> <bean id = "datasource"> <propriété nom = "piloteclname"> <value> com.mysql.jdbc.driver </value> </ propriété> <propriété name = "url"> <value> jdbc: mysql: // localhost: 3306 / springdb </value> </ propriété> <propriété name = "username"> <value> root </value> </prewet> <propriété name = "mot de passe"> <value> leizhImin </ Value> <propriété Name = "Mot de passe"> <value> LeizhImin </ Value> <propriété Name = "Mot de passe"> <value> LeizHIMIN </ Value> <Propriété Name = "Mot de passe"> <value> <bean id = "SessionFactory" destrie-Method = "Close"> <propriété name = "DataSource"> <ref bean = "dataSource" /> </ propriété> <propriété name = "MappingResources"> <sist> <value> com / lavasoft / springnote / ch06_hbm_02protx / user.hbm.xml </value> </ list> </ property> name = "HiberNateProperties"> <propS> <prop key = "hibernate.dialect"> org.hibernate.dialect.mysqldialect </prop> </ props> </ propriété> </ bean> <bean id = "userdao"> <propriété name = "SessionFactory"> <réf.
import org.springframework.context.ApplicationContext; import org.springframework.context.support.filesystemxmlapplicationContext; / ** * Créé par Intellij Idea. <br> * <b> Remarque </b>: Classe de test, client * / classe publique SpringhiberNateDEMO {public static void main (String [] args) {ApplicationContext context = new FileSystemXmlApplicationContext ("d: //_spring//src//com/lavasoft//springnote//ch06_hbm_02protx//bean-hbm_tx.xml"); // Créer un objet DAO iUserDao UserDao = (iUserDao) context.getBean ("UserDao"); Utilisateur utilisateur = nouveau utilisateur (); user.setName ("Caterpillar"); user.setAGE (Nouveau entier (30)); userdao.insert (utilisateur); user = userdao.find (nouvel entier (1)); System.out.println ("name:" + user.getName ()); }}
Résultats en cours:
LOG4J: avertissez aucun annexe ne peut être trouvé pour Logger (org.springframework.core.collectionfactory). LOG4J: avertissez correctement le système log4j. ID de l'objet utilisateur enregistré: 18 Nom: JDBCTemplate Process fini avec le code de sortie 0