Spring Dao's JDBC
O principal objetivo do suporte DAO (Objeto de Acesso a Dados) fornecido pela primavera é facilitar o uso de diferentes tecnologias de acesso a dados de maneira padrão, como JDBC, Hibernate ou JDO. Ele não apenas permite alternar facilmente entre essas tecnologias de persistência, mas também permite que você não precise considerar lidar com exceções específicas em várias tecnologias ao codificar.
Para facilitar o uso de várias tecnologias de acesso a dados, como JDBC, JDO e Hibernate de uma maneira consistente, a Spring fornece uma classe DAO abstrata para você se estender. Essas classes abstratas fornecem alguns métodos pelos quais você pode obter fontes de dados e outras informações de configuração relacionadas à tecnologia de acesso a dados que você está usando atualmente.
Classe de suporte da DAO:
JDBCDAOSUPPORT - A classe base para objetos de acesso a dados JDBC. É necessária uma fonte de dados e o JDBCTemplate é fornecido para a subclasse.
HibernatedAosupport - A classe base para objetos de acesso a dados de hibernação. É necessário um SessionFactory e um hibernateTemplate é fornecido para a subclasse. Você também pode optar por inicializar diretamente fornecendo um hibernateTemplate, para que as últimas configurações possam ser reutilizadas, como sessionfactory, modo de descarga, tradutor de exceção, etc.
Jdodaosupport - A classe base para objetos de acesso a dados JDO. É necessário um PersistenceManagerFactory para configurar e fornecer JDOTEMplate para subclasses.
Jpadaosupport - A classe base para objetos de acesso a dados JPA. É necessário um entityManagerFactory e o JPATEMPLAT é fornecido para subclasses.
Esta seção discute principalmente o apoio da Spring ao JDBCDAOSUPPPORT.
Aqui está um exemplo:
soltar tabela se existir usuário; /*==============================================================*//*Tabela: Usuário*/ /*================================================================* / Crie usuário de tabela (ID BigInt Auto_incrent NULL, Nome Varchar (24), idade int,
Public class Usuário {ID inteiro privado; nome de string privado; idade inteira privada; public integer getId () {return id; } public void SetId (ID inteiro) {this.id = id; } public string getName () {return name; } public void setName (nome da string) {this.name = name; } public integer getage () {retorna idade; } public void setage (idade inteira) {this.age = Age; }} /** * Criado por Intellij Idea. <br> * <b> Usuário </b>: leizhimin <br> * <b> Data </b>: 2008-4-22 15:34:36 <br> * <b> Nota </b>: interface dao */interface pública IUSERDAO {public void Insert (usuário do usuário); Usuário público encontre (ID inteiro); } importar javax.sql.dataSource; importar java.sql.connection; importar java.sql.sqLexception; /*** Criado por Intellij Idea. <br>* <b> Nota </b>: classe base dao, fornecendo injeção de fonte de dados*/classe pública baseada em {private DataSource DataSource; public DataSource getDataSource () {return DataSource; } public void SetDataSource (DataSource DataSource) {this.DataSource = DataSource; } conexão pública getConnection () {conexão conn = null; tente {Conn = DataSource.getConnection (); } catch (sqLexception e) {e.printStackTrace (); } retornar Conn; }}/** * Criado por Intellij Idea. <br> * <b> Usuário </b>: leizhimin <br> * <b> Data </b>: 2008-4-22 15:36:04 <br> * <b> Nota </b>: implementação da DAO */public userDao Extimnds BasEmemeMPlemacleions Ierda getjdbcTemplate () {return novo jdbcTemplate (getDataSource ()); } public void insert (usuário do usuário) {string name = user.getName (); int age = user.getage (). intvalue (); // jdbctemplate.update ("Insira no usuário (nome, idade)" // + "valores ('" + nome + "'," + idade + ")"); String sql = "inserir no usuário (nome, idade) valores (?,?)"; getjdbcTemplate (). update (sql, novo objeto [] {nome, idade}); } public User Find (ID inteiro) {list linhas = getjdbcTemplate (). QueryForList ("Selecione * do usuário onde id =" + id.intValue ()); Iterator it = lobs.iterator (); if (it.hasnext ()) {map userMap = (map) it.next (); Inteiro i = new Integer (UserMap.get ("ID"). ToString ()); Nome da string = UserMap.get ("Nome"). ToString (); Idade inteira = novo número inteiro (UserMap.get ("Age"). ToString ()); Usuário do usuário = novo usuário (); user.setId (i); user.setName (nome); user.setage (idade); devolver usuário; } retornar nulo; }}<? xml versão = "1.0" coding = "utf-8"?> <! <Value> com.mysql.jdbc.driver </value> </property> <propriedade name = "url"> <value> jdbc: mysql: // localhost: 3306/springdb </value> </propriedade> <names name = "username"> <value> raiz </value </syerm> </propriedade> <nome da propriedade = "username"> <value> raiz </value </syern name = name = "userriname"> </values> </value </propriedade> </propriedade> <nome da propriedade = "Username"> <vurou> </Value </</propriedade> </propriedades> </bean> <bean id = "baseado em" abstract = "true"> <nome da propriedade = "DataSource"> <ref Bean = "DataSource"/> </Property> </bean> <bean id = "userdao" parent = "baseado"> </ Bean> </ Bean>
importar org.springframework.context.ApplicationContext; importar org.springframework.context.support.filesystemxmlapplicationContext; /** * Criado por Intellij Idea. <br> * <b> Usuário </b>: leizhimin <br> * <b> Data </b>: 2008-4-22 15:59:18 <br> * <b> Nota </b>: classe de teste, cliente */public class SpringDaodemo {public static void main ([] String [] FilesystemxmlapplicationContext ("d: //_spring//src/com/lavasoft//springnote//ch05_jdbc03_temp//bean-jdbc-temp.xml"); Usuário do usuário = novo usuário (); user.setName ("hahhah"); user.setage (novo número inteiro (22)); Iuserdao userdao = (iuserdao) context.getbean ("userdao"); userdao.insert (usuário); usuário = userdao.find (novo inteiro (1)); System.out.println ("nome:" + user.getName ()); }}
Resultados em execução:
LOG4J: WARN Nenhum apêndice foi encontrado para o Logger (org.springframework.core.collectionFactory). LOG4J: WARN, inicialize o sistema LOG4J corretamente. Nome: Processo JDBCTemplate terminado com o código de saída 0
Spring Dao's Hibernate
HibernatedAosupport - A classe base para objetos de acesso a dados de hibernação. É necessário um SessionFactory e um hibernateTemplate é fornecido para a subclasse. Você também pode optar por inicializar diretamente fornecendo um hibernateTemplate, para que as últimas configurações possam ser reutilizadas, como sessionfactory, modo de descarga, tradutor de exceção, etc.
Esta seção discute principalmente o apoio da Spring ao Hibernatetemplate.
Aqui está um exemplo:
soltar tabela se existir usuário; /*==============================================================*//*Tabela: Usuário*/ /*================================================================* / Crie usuário de tabela (ID BigInt Auto_incrent NULL, Nome Varchar (24), idade int,
/*** Criado por Intellij Idea. <br>* <b> Nota </b>: classe de entidade de hiberante*/public class Usuário {ID inteiro privado; nome de string privado; idade inteira privada; public integer getId () {return id; } public void SetId (ID inteiro) {this.id = id; } public string getName () {return name; } public void setName (nome da string) {this.name = name; } public integer getage () {retorna idade; } public void setage (idade inteira) {this.age = Age; }}<? xml versão = "1.0" coding = "utf-8"?> <! name = "com.lavasoft.springnote.ch06_hbm_02detx.user" tabela = "user"> <id name = "id" column = "id"> <generator/> </dod> <propriedades name = "name" column = "name"/> <propriedades = "idade" column = "idade"/> </> </classe "<class"
/** * Criado por Intellij Idea. <br> * <b> Usuário </b>: leizhimin <br> * <b> Data </b>: 2008-4-23 15:37:43 <br> * <b> Nota </b>: interface dao */interface pública IUSERDAO {public void Insert (usuário do usuário); Usuário público encontre (ID inteiro); } importar org.hibernate.SessionFactory; importar org.springframework.orm.hibernate3.HibernateTemplate; /** * Criado por Intellij Idea. <br> * <b> Usuário </b>: leizhimin <br> * <b> Data </b>: 2008-4-23 15:15:55 <br> * <b> Nota </b>: implementação dao */public class Userdao IMPLEMENIBOIBO IUSERDABON; public void SetSessionFactory (SessionFactory SessionFactory) {this.hibernatetemplate = new HibernateTemplate (sessionFactory); } public void insert (usuário do usuário) {hibernateTemplate.save (usuário); System.out.println ("ID do objeto de usuário salvo:"+user.getId ()); } public User Find (ID inteiro) {Usuário do usuário = (Usuário) Hibernatetemplate.get (user.class, id); devolver usuário; }}<? xml versão = "1.0" coding = "utf-8"?> <! <Value> com.mysql.jdbc.driver </value> </property> <propriedade name = "url"> <value> jdbc: mysql: // localhost: 3306/springdb </value> </propriedade> <names name = "username"> <value> raiz </value </syerm> </propriedade> <nome da propriedade = "username"> <value> raiz </value </syern name = name = "userriname"> </values> </value </propriedade> </propriedade> <nome da propriedade = "Username"> <vurou> </Value </</propriedade> </propriedades> </bean> <bean id = "sessionFactory" Destroy-method = "Close"> <propriedade name = "DataSource"> <ref Bean = "DataSource"/> </Property> <Nome da propriedade = "mappingResources"> <lista> <Value> com/lavasoft/springnote/ch06_hbm.02Prot> <propriedade name = "hibernateProperties"> <ports> <propi key = "hibernate.dialect"> org.hibernate.dialect.mysqldialect </spower> </props> </propriedade> </bean> <Bean id = "userdao"> <Nome da propriedade = "SessionFactory"> <fiferty> <fiEn> <ean> <bean id = userDao "> <nome da///////ben- bean> <ean> <ean> <Bean Id = Userdao"> </"
importar org.springframework.context.ApplicationContext; importar org.springframework.context.support.filesystemxmlapplicationContext; /*** Criado por Intellij Idea. <br>* <b> Nota </b>: classe de teste, cliente*/classe pública springhibernatedemo {public static void main (string [] args) {ApplicationContext Context = new Filesystemxmlapplicationcontext ("d: //_spring//src/com/lavasoft//springnote//ch06_hbm_02protx//bean-hbm_tx.xml"); // Crie o objeto dao iuserdao userdao = (iuserdao) context.getbean ("userdao"); Usuário do usuário = novo usuário (); user.setName ("Caterpillar"); user.setage (novo número inteiro (30)); userdao.insert (usuário); usuário = userdao.find (novo inteiro (1)); System.out.println ("nome:" + user.getName ()); }}
Resultados em execução:
LOG4J: WARN Nenhum apêndice foi encontrado para o Logger (org.springframework.core.collectionFactory). LOG4J: WARN, inicialize o sistema LOG4J corretamente. ID do objeto de usuário salvo: 18 Nome: Processo JDBCTemplate terminado com o código de saída 0