Spring Dao's JDBC
El objetivo principal del soporte DAO (Objeto de acceso a datos) proporcionado por Spring es facilitar el uso de diferentes tecnologías de acceso a datos de manera estándar, como JDBC, Hibernate o JDO. No solo le permite cambiar fácilmente entre estas tecnologías de persistencia, sino que también le permite no tener que considerar el manejo de excepciones específicas en varias tecnologías al codificar.
Para facilitar el uso de varias tecnologías de acceso a datos como JDBC, JDO y Hibernate de manera consistente, Spring proporciona una clase DAO abstracta para que pueda extender. Estas clases de abstracto proporcionan algunos métodos a través de los cuales puede obtener fuentes de datos y otra información de configuración relacionada con la tecnología de acceso a datos que está utilizando actualmente.
Clase de soporte DAO:
JDBCDAOSUPPORT: la clase base para los objetos de acceso a datos JDBC. Se requiere una fuente de datos y se proporciona JDBCTemplate para la subclase.
Hibernadaosupport: la clase base para objetos de acceso a datos de Hibernate. Se requiere una Factory de Session y se proporciona una placa de hibernateTetTemplate para la subclase. También puede optar por inicializarse directamente proporcionando una placa de hibernateTetet, para que esta última configuración pueda reutilizarse, como SessionFactory, Mode Flush, Translator de excepciones, etc.
JDodaosupport: la clase base para los objetos de acceso a datos JDO. Se requiere que PersistenceManagerFactory se configure y proporcione JDotemplate para las subclases.
JPadaosupport: la clase base para los objetos de acceso a datos JPA. Se requiere una EntityManagerFactory, y JPATemplate se proporciona para subclases.
Esta sección discute principalmente el apoyo de Spring para JDBCDaosupport.
Aquí hay un ejemplo:
Tabla de caída si existe el usuario; /*==============================================================*//*Table: Usuario*/ /*==================.
Usuario de clase pública {ID de entero privado; nombre de cadena privada; edad de entero privado; public Integer getId () {return id; } public void setid (ID de entero) {this.id = id; } public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; } public Integer GetAge () {return Age; } public void setAge (edad entera) {this.age = edad; }} /** * Creado por IntelliJ Idea. <br> * <b> Usuario </b>: Leizhimin <br> * <b> Date </b>: 2008-4-22 15:34:36 <br> * <b> nota </b>: interfaz DAO */interfaz pública IUSerdao {Public void Insert (usuario de usuario); Public User Find (ID de entero); } import javax.sql.dataSource; import java.sql.connection; import java.sql.sqlexception; /*** Creado por Idea IntelliJ. <br>* <b> nota </b>: base de base DAO, proporcionando inyección de origen de datos*/public class BaseAo {DataSource DataSource de datos privados; public dataSource getDataSource () {return dataSource; } public void setDataSource (DataSource DataSource) {this.dataSource = DataSource; } Public Connection getConnection () {Connection conn = null; intente {conn = dataSource.getConnection (); } Catch (Sqlexception e) {E.PrintStackTrace (); } return Conn; }}/** * creado por la idea IntelliJ. <br> * <b> usuario </b>: leizhimin <br> * <b> date </b>: 2008-4-22 15:36:04 <br> * <b> nota </b>: implementación de DAO */clase pública usuarios de usuarios de la clase extiende las implementaciones de los basados en el IUSERDAO {Public jdbctEmplateMplate getJDBCTemplate () {return new jdbctemplate (getDataSource ()); } public void Insert (usuario de usuario) {String name = user.getName (); int age = user.getage (). intValue (); // jdbctemplate.update ("Insertar en el usuario (nombre, edad)" // + "valores ('" + nombre + "'," + edad + ")"); Cadena sql = "insertar en valores de usuario (nombre, edad) (?,?)"; getJDBCTemplate (). Update (SQL, nuevo objeto [] {nombre, edad}); } Public User Find (Integer ID) {List Rows = getJDBCTemplate (). QUERYFORLIST ("SELECCIONAR * DEL USUARIO DONDE ID =" + ID.InTValue ()); Iterador it = shows.iterator (); if (it.hasnext ()) {map usermap = (map) it.next (); Entero i = nuevo entero (usermap.get ("id"). ToString ()); Name de cadena = usermap.get ("nombre"). ToString (); Integer Age = new Integer (usermap.get ("edad"). ToString ()); Usuario user = nuevo usuario (); user.setID (i); user.setName (nombre); user.setage (edad); devolver el usuario; } return null; }}<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype Beans public "-// spring/dtd bean/en" "http://www.springframework.org/dtd/spring-beanss.dtd"> <Beans> <bean id = "dataSource" singleton = "verdadero" <verdadero "n." Nombre "n. <value> com.mysql.jdbc.driver </value> </property> <Property name = "url"> <value> jdbc: mysql: // localhost: 3306/springdb </value> </property> <Property name = "username"> <value> root </value> <///propiedad de la propiedad = "contraseña"> <value> leizhimin <value <valor " <bean id = "baseAo" abstract = "true"> <Property name = "dataSource"> <ref bean = "dataSource"/> </property </bean> <bean id = "userdao" parent = "baseoo"> </ bean> </ beans>
importar org.springframework.context.applicationContext; importar org.springframework.context.support.filesystemxmlaPplicationContext; /** * Creado por IntelliJ Idea. <br> * <b> User </b>: Leizhimin <br> * <b> fecha </b>: 2008-4-22 15:59:18 <br> * <b> nota </b>: prueba de prueba, cliente */clase public springdaodemo {public estatic estatic bain (string [] args) {aplicaciones de la aplicación FilesystemxmlaPplicationContext ("d: //_spring//src//com/lavasoft//springnote//ch05_jdbc03_temp//bean-jdbc-temp.xml"); Usuario user = nuevo usuario (); user.setName ("hahhah"); user.setage (nuevo entero (22)); Iuserdao userDao = (iuserdao) context.getBean ("userdao"); userdao.insert (usuario); user = userdao.find (nuevo entero (1)); System.out.println ("Nombre:" + user.getName ()); }}
Resultados de ejecución:
Log4j: advierte que no se pudieran encontrar apéndices para Logger (org.springframework.core.collectionFactory). Log4j: advierta, inicialice el sistema log4j correctamente. Nombre: proceso JDBCTemplate terminado con el código de salida 0
Spring Dao's Hibernate
Hibernadaosupport: la clase base para objetos de acceso a datos de Hibernate. Se requiere una Factory de Session y se proporciona una placa de hibernateTetTemplate para la subclase. También puede optar por inicializarse directamente proporcionando una placa de hibernateTetet, para que esta última configuración pueda reutilizarse, como SessionFactory, Mode Flush, Translator de excepciones, etc.
Esta sección discute principalmente el apoyo de Spring para HibernateTemplate.
Aquí hay un ejemplo:
Tabla de caída si existe el usuario; /*==============================================================*//*Table: Usuario*/ /*==================.
/*** Creado por Idea IntelliJ. <br>* <b> nota </b>: clase de entidad Hiberante*/Public Class User {private entero ID; nombre de cadena privada; edad de entero privado; public Integer getId () {return id; } public void setid (ID de entero) {this.id = id; } public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; } public Integer GetAge () {return Age; } public void setAge (edad entera) {this.age = edad; }}<? xml versión = "1.0" encoding = "utf-8"?> <! DOCTYPE Hibernate-Mapping público "-// Hibernate/Hibernate Mapping Dtd 3.0 // en" "http://hibernate.sourceForge.net/hibernate-mapping-3.0.dtd"> <Hibercnate-mapping> <calsape name = "com.lavasoft.springnote.ch06_hbm_02detx.user" table = "user"> <id name = "id" columna = "id"> <generador/> </id> <propiedad name = "name" column = "name"/> <name de propiedad = "edad" columna = "edad"/> </ssapnate> </iibernate-xipping>
/** * Creado por IntelliJ Idea. <br> * <b> Usuario </b>: Leizhimin <br> * <b> Date </b>: 2008-4-23 15:37:43 <br> * <b> nota </b>: interfaz DAO */interfaz pública iuserdao {público inserto (usuario user); Public User Find (ID de entero); } importar org.hibernate.sessionFactory; importar org.springframework.orm.Hibernate3.HiberNateTemplate; /** * Creado por IntelliJ Idea. <br> * <b> Usuario </b>: Leizhimin <br> * <b> Date </b>: 2008-4-23 15:15:55 <br> * <b> nota </b>: implementación de DAO */clase pública de usuarios de clase IUSerDaO {Hiebernatetepplate private HibernatetEmplate; public void setSessionFactory (SessionFactory SessionFactory) {this.HiberNateTemplate = new HibernateTemplate (SessionFactory); } public void Insert (usuario de usuario) {hibernateTemplate.save (usuario); System.out.println ("ID del objeto de usuario guardado:"+user.getID ()); } Public User Find (Integer ID) {user user = (usuario) hibernateTemplate.get (user.class, id); devolver el usuario; }}<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype Beans public "-// spring/dtd bean/en" "http://www.springframework.org/dtd/spring-beans.dtd"> <Beans> <bean id = "dataSource"> <serperty name = "DriverClasname" <value> com.mysql.jdbc.driver </value> </property> <Property name = "url"> <value> jdbc: mysql: // localhost: 3306/springdb </value> </property> <Property name = "username"> <value> root </value> <///propiedad de la propiedad = "contraseña"> <value> leizhimin <value <valor " <bean id="sessionFactory" destroy-method="close"> <property name="dataSource"> <ref bean="dataSource"/> </property> <property name="mappingResources"> <list> <value>com/lavasoft/springnote/ch06_hbm_02proTx/User.hbm.xml</value> </list> </property> <property name = "HibernateProperties"> <props> <prop key = "hibernate.dialect"> org.hibernate.dialect.mysqldialect </pr> </props> </property> </bean> <bean id = "userdao"> <name de la propiedad = "sessionrory"> <ref bean = "sessionfactory"/> </sperty> </"
importar org.springframework.context.applicationContext; importar org.springframework.context.support.filesystemxmlaPplicationContext; /*** creado por IntelliJ Idea. <br>* <b> nota </b>: clase de prueba, cliente*/public springHibernatedEmo {public static void main (string [] args) {applicationContext context = new FilesystemXMLApPlicationContext ("D: //_spring//src//com/lavasoft//springnote//ch06_hbm_02protx//bean-hbm_tx.xml"); // Crear objeto DAO iuserdao userDao = (iuserdao) context.getBean ("userDao"); Usuario user = nuevo usuario (); user.setName ("Caterpillar"); user.setage (nuevo entero (30)); userdao.insert (usuario); user = userdao.find (nuevo entero (1)); System.out.println ("Nombre:" + user.getName ()); }}
Resultados de ejecución:
Log4j: advierte que no se pudieran encontrar apéndices para Logger (org.springframework.core.collectionFactory). Log4j: advierta, inicialice el sistema log4j correctamente. ID del objeto de usuario guardado: 18 Nombre: Proceso JDBCTemplate terminado con el código de salida 0