Spring Daos JDBC
Der Hauptzweck des von Spring bereitgestellten DAO -Supports (Data Access Object) besteht darin, die Verwendung verschiedener Datenzugriffstechnologien auf eine standardmäßige Weise wie JDBC, Hibernate oder JDO zu erleichtern. Sie können nicht nur leicht zwischen diesen Persistenztechnologien wechseln, sondern Sie auch nicht in Betracht ziehen müssen, um spezifische Ausnahmen in verschiedenen Technologien bei der Codierung zu behandeln.
Um die Verwendung verschiedener Datenzugriffstechnologien wie JDBC, JDO und Hibernate auf konsistente Weise zu erleichtern, bietet Spring eine abstrakte DAO -Klasse, die Sie erweitern können. Diese abstrakten Klassen bieten einige Methoden, mit denen Sie Datenquellen und andere Konfigurationsinformationen in Bezug auf die derzeit verwendete Datenzugriffstechnologie erhalten können.
DAO -Unterstützungsklasse:
JDBCDAOSUPPORT - Die Basisklasse für JDBC -Datenzugriffsobjekte. Für die Unterklasse ist eine Datenquelle erforderlich, und JDBCTEMPLTE wird bereitgestellt.
Hibernatedaosupport - Die Basisklasse für Hibernate -Datenzugriffsobjekte. Für die Unterklasse ist eine SessionFactory erforderlich, und für die Unterklasse wird eine Hibernatetemplate bereitgestellt. Sie können sich auch direkt initialisieren, indem Sie eine Hibernatetemplate bereitstellen, damit die letzteren Einstellungen wiederverwendet werden können, z. B. SessionFactory, Flush -Modus, Ausnahmeübersetzer usw.
JDODAOSUPPORT - Die Basisklasse für JDO -Datenzugriffsobjekte. Eine PersistencemanagerFactory ist erforderlich, um JDotemplate für Unterklassen einzurichten und bereitzustellen.
JPADAOSUPPORT - Die Basisklasse für JPA -Datenzugriffsobjekte. Ein EntityManagerFactory ist erforderlich, und Jpatemplate wird für Unterklassen bereitgestellt.
In diesem Abschnitt werden die Unterstützung von Spring für JDBCDAOSUPPORT hauptsächlich erläutert.
Hier ist ein Beispiel:
Droptabelle, wenn der Benutzer existiert; /*=======================================================================*/*Tabelle: Benutzer*/////////////////// /*=========================================================================* / CREATE TABLE -Benutzer (ID Bigint Auto_increment nicht null, name varchar (24), ältere Id -Int, ID -ID);
public class User {private Integer id; privater Zeichenfolge Name; privates Ganzzahlalter; public Integer getid () {return id; } public void setId (Integer id) {this.id = id; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public Integer getage () {Return Age; } public void setage (Ganzzahl älter) {this.age = älter; }} /** * Erstellt von Intellij idee. öffentlicher Benutzer finden (Ganzzahl -ID); } importieren javax.sql.datasource; Import Java.sql.Connection; importieren java.sql.sqlexception; /*** Erstellt von Intellij idee. public DataSource getDataSource () {return DataSource; } public void setDataSource (DataSource DataSource) {this.dataSource = DataSource; } public Connection getConnection () {Verbindung conn = null; try {conn = dataSource.getConnection (); } catch (sqlexception e) {e.printstacktrace (); } return conn; }}/** * Erstellt von Intellij idee. JDBCTEMPLET (getDataSource ()); } public void Insert (Benutzer Benutzer) {String name = user.getName (); int age = user.getage (). intValue (); // jdbctemplate.update ("in den Benutzer einfügen (Name, Alter)" // + "Werte ('" + name + "'," + Alter + ")"); String SQL = "In Benutzer (Name, Alter) einfügen (?,?)"; getJdbctemplate (). Update (SQL, neues Objekt [] {Name, Alter}); } public user find (Integer id) {list rows = getJdbCtemplate (). queryForList ("SELECT * VON UMSER WHERE ID =" + id.intValue ()); Iterator it = zeilen.iterator (); if (it.hasnext ()) {map usermap = (map) it.next (); Integer i = new Integer (UsMap.get ("id"). ToString ()); String name = usermap.get ("name"). ToString (); Integer alter = New Integer (UsMap.get ("Alter"). ToString ()); User user = new user (); user.setId (i); user.setName (name); user.Setage (Alter); Benutzer zurückgeben; } return null; }}<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="dataSource" singleton="true"> <property name="driverClassName"> <wert> com.mysql.jdbc.driver </value> </property> <Eigenschaft name = "url"> <wert> jdbc: mysql: // localhost: 3306/springdb </value> </property> <Eigenschaft name = "username"> <value> </value> </Eigenschaft> </Eigenschaft> </orient> </Eigenschaft "Passwort" - "Passwort"> </value> </achance> </achapiens </achbilds> </achbilds> </ach Property> </ach Property> </compassy = "password"> </value> </achance> </probium> </achapiens> </ortes> </achapien- </bean> <bean id = "basiertAo" contract = "true"> <Eigenschaft name = "dataSource"> <ref bean = "dataSource"/> </property> </bean> <bean id = "userdao" parent = "basiert“> </bean> </beans> </beans>
import org.springframework.context.ApplicationContext; import org.springframework.context.support.filesystemxMlApplicationContext; /** * Erstellt von Intellij idee. FileSystemxMlApplicationContext ("d: //_spring/src/com/lavasoft//springnote//ch05_jdbc03_temp//bean-jdbc-temp.xml"); User user = new user (); user.setName ("hahhah"); user.Setage (neue Integer (22)); IUSERDAO UserDao = (iUSerDao) context.getBean ("userDao"); userDao.insert (Benutzer); user = userDao.find (neue Integer (1)); System.out.println ("Name:" + user.getName ()); }}
Auslaufergebnisse:
LOG4J: Warn, dass für Logger (org.springframework.core.collectionFactory) keine Appender gefunden werden konnten. LOG4J: Warnen Sie bitte das LOG4J -System ordnungsgemäß initialisieren. Name: JDBCTEMPLATE -Vorgang mit dem Ausgangscode 0 abgeschlossen
Frühling Daos Winterschlaf
Hibernatedaosupport - Die Basisklasse für Hibernate -Datenzugriffsobjekte. Für die Unterklasse ist eine SessionFactory erforderlich, und für die Unterklasse wird eine Hibernatetemplate bereitgestellt. Sie können sich auch direkt initialisieren, indem Sie eine Hibernatetemplate bereitstellen, damit die letzteren Einstellungen wiederverwendet werden können, z. B. SessionFactory, Flush -Modus, Ausnahmeübersetzer usw.
In diesem Abschnitt wird hauptsächlich die Unterstützung von Spring für Hibernatetemplate erläutert.
Hier ist ein Beispiel:
Droptabelle, wenn der Benutzer existiert; /*=======================================================================*/*Tabelle: Benutzer*/////////////////// /*=========================================================================* / CREATE TABLE -Benutzer (ID Bigint Auto_increment nicht null, name varchar (24), ältere Id -Int, ID -ID);
/*** Erstellt von Intellij idee. privater Zeichenfolge Name; privates Ganzzahlalter; public Integer getid () {return id; } public void setId (Integer id) {this.id = id; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public Integer getage () {Return Age; } public void setage (Ganzzahl älter) {this.age = älter; }}<? name = "com.lavasoft.springnote.ch06_hbm_02detx.user" table = "user"> <id name = "id" column = "id"> <generator/> </id> <Eigenschaft name = "name" column = "name"/> <
/** * Erstellt von Intellij idee. öffentlicher Benutzer finden (Ganzzahl -ID); } import org.hiberNate.sessionFactory; import org.springframework.orm.hibernate3.hibernatetemplate; /** * Erstellt von Intellij idee. public void setSessionFactory (SessionFactory SessionFactory) {this.hiberNatetemplate = new Hibernatetemplate (SessionFactory); } public void Insert (Benutzer Benutzer) {Hibernatetemplate.save (Benutzer); System.out.println ("ID des gespeicherten Benutzerobjekts:"+user.getId ()); } public user find (Integer id) {user user = (user) hibernatetemplate.get (user.class, id); Benutzer zurückgeben; }}<? <wert> com.mysql.jdbc.driver </value> </property> <Eigenschaft name = "url"> <wert> jdbc: mysql: // localhost: 3306/springdb </value> </property> <Eigenschaft name = "username"> <value> </value> </Eigenschaft> </Eigenschaft> </orient> </Eigenschaft "Passwort" - "Passwort"> </value> </achance> </achapiens </achbilds> </achbilds> </ach Property> </ach Property> </compassy = "password"> </value> </achance> </probium> </achapiens> </ortes> </achapien- </bean> <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
import org.springframework.context.ApplicationContext; import org.springframework.context.support.filesystemxMlApplicationContext; /*** Erstellt von Intellij idee. DateiSystemxMlApplicationContext ("D: //_spring//src/com/lavasoft//springnote//ch06_hbm_02protx//bean-hbm_tx.xml"); // DAO -Objekt iuserdao userDao = (iUserdao) context.getbean ("userDao") erstellen; User user = new user (); user.setName ("caterpillar"); user.Setage (neue Integer (30)); userDao.insert (Benutzer); user = userDao.find (neue Integer (1)); System.out.println ("Name:" + user.getName ()); }}
Auslaufergebnisse:
LOG4J: Warn, dass für Logger (org.springframework.core.collectionFactory) keine Appender gefunden werden konnten. LOG4J: Warnen Sie bitte das LOG4J -System ordnungsgemäß initialisieren. ID des gespeicherten Benutzerobjekts: 18 Name: JDBCTEMPLATE -Vorgang mit dem Ausgangscode 0 abgeschlossen