- Proljetni JDBC predložak
- Razumijevanje potrebe za Spring JDBC predloškom
- Prednost Spring JDBC predloška
- Klase JDBC predložaka
- Primjer klase JdbcTemplate
Proljeće JdbcTemplate je moćan mehanizam za povezivanje s bazom podataka i izvršavanje SQL upita. Interno koristi JDBC API, ali uklanja mnoge probleme JDBC API-ja.
Problemi JDBC API-ja
Problemi JDBC API-ja su sljedeći:
- Moramo napisati mnogo koda prije i nakon izvršavanja upita, kao što je stvaranje veze, izjave, zatvaranje skupa rezultata, veza itd.
- Moramo izvršiti kod za rukovanje iznimkama na logici baze podataka.
- Moramo izvršiti transakciju.
- Ponavljanje svih ovih kodova iz jedne u drugu logiku baze podataka dugotrajan je zadatak.
Prednost Spring JdbcTemplate
Spring JdbcTemplate eliminira sve gore navedene probleme JDBC API-ja. Omogućuje vam metode za izravno pisanje upita, tako da štedi mnogo posla i vremena.
Približava se proljeće Jdbc
Spring framework pruža sljedeće pristupe za pristup JDBC bazi podataka:
- JdbcTemplate
- NamedParameterJdbcTemplate
- SimpleJdbcTemplate
- SimpleJdbcInsert i SimpleJdbcCall
Klasa JdbcTemplate
To je središnja klasa u Spring JDBC klasama podrške. Brine se o stvaranju i oslobađanju resursa kao što je stvaranje i zatvaranje objekta veze itd. Tako da neće dovesti do problema ako zaboravite zatvoriti vezu.
Obrađuje iznimku i pruža informativne poruke o iznimci uz pomoć klasa iznimke definiranih u org.springframework.dao paket.
Uz pomoć klase JdbcTemplate možemo izvesti sve operacije baze podataka kao što su umetanje, ažuriranje, brisanje i dohvaćanje podataka iz baze podataka.
Pogledajmo metode proljetne klase JdbcTemplate.
Ne. | metoda | Opis |
---|---|---|
1) | javno int ažuriranje (string upit) | koristi se za umetanje, ažuriranje i brisanje zapisa. |
2) | javno int ažuriranje (upit niza, objekt... argumenti) | koristi se za umetanje, ažuriranje i brisanje zapisa pomoću PreparedStatementa koristeći dane argumente. |
3) | javno poništeno izvršenje (string upit) | koristi se za izvršavanje DDL upita. |
4) | public T execute(String sql, PreparedStatementCallback radnja) | izvršava upit pomoću povratnog poziva PreparedStatement. |
5) | javni T upit (String sql, ResultSetExtractor rse) | koristi se za dohvaćanje zapisa pomoću ResultSetExtractor. |
6) | javni popis upita (string sql, RowMapper rse) | koristi se za dohvaćanje zapisa pomoću RowMappera. |
Primjer Spring JdbcTemplate
Pretpostavljamo da ste kreirali sljedeću tablicu unutar Oracle10g baze podataka.
create table employee( id number(10), name varchar2(100), salary number(10) );Zaposlenik.java
Ova klasa sadrži 3 svojstva s konstruktorima te postavljačem i dobivačem.
package com.javatpoint; public class Employee { private int id; private String name; private float salary; //no-arg and parameterized constructors //getters and setters }EmployeeDao.java
Sadrži jedno svojstvo jdbcTemplate i tri metode saveEmployee(), updateEmployee i deleteEmployee().
package com.javatpoint; import org.springframework.jdbc.core.JdbcTemplate; public class EmployeeDao { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public int saveEmployee(Employee e){ String query='insert into employee values( ''+e.getId()+'',''+e.getName()+'',''+e.getSalary()+'')'; return jdbcTemplate.update(query); } public int updateEmployee(Employee e){ String query='update employee set name=''+e.getName()+'',salary=''+e.getSalary()+'' where id=''+e.getId()+'' '; return jdbcTemplate.update(query); } public int deleteEmployee(Employee e){ String query='delete from employee where id=''+e.getId()+'' '; return jdbcTemplate.update(query); } }ApplicationContext.xml
The DriverManagerDataSource koristi se za sadržavanje informacija o bazi podataka kao što su naziv klase upravljačkog programa, URL veze, korisničko ime i lozinka.
Postoji nekretnina pod nazivom izvor podataka u klasi JdbcTemplate tipa DriverManagerDataSource. Dakle, moramo dati referencu objekta DriverManagerDataSource u klasi JdbcTemplate za svojstvo izvora podataka.
Ovdje koristimo objekt JdbcTemplate u klasi EmployeeDao, pa ga prosljeđujemo metodom postavljača, ali možete koristiti i konstruktor.
Test.java
Ova klasa dobiva bean iz datoteke applicationContext.xml i poziva metodu saveEmployee(). Također možete pozvati metodu updateEmployee() i deleteEmployee() uklanjanjem komentara iz koda.
package com.javatpoint; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext ctx=new ClassPathXmlApplicationContext('applicationContext.xml'); EmployeeDao dao=(EmployeeDao)ctx.getBean('edao'); int status=dao.saveEmployee(new Employee(102,'Amit',35000)); System.out.println(status); /*int status=dao.updateEmployee(new Employee(102,'Sonoo',15000)); System.out.println(status); */ /*Employee e=new Employee(); e.setId(102); int status=dao.deleteEmployee(e); System.out.println(status);*/ } }preuzmite ovaj primjer (razvijen pomoću MyEclipse IDE)
preuzmite ovaj primjer (razvijen korištenjem Eclipse IDE)