- Jarní šablona JDBC
- Pochopení potřeby Spring JDBC Template
- Výhoda jarní JDBC šablony
- Třídy šablon JDBC
- Příklad třídy JdbcTemplate
Jaro JdbcTemplate je výkonný mechanismus pro připojení k databázi a provádění SQL dotazů. Interně používá JDBC API, ale odstraňuje spoustu problémů JDBC API.
Problémy JDBC API
Problémy JDBC API jsou následující:
- Potřebujeme napsat spoustu kódu před a po provedení dotazu, jako je vytvoření připojení, příkaz, uzavření sady výsledků, připojení atd.
- Potřebujeme provést kód zpracování výjimek na logice databáze.
- Musíme zvládnout transakci.
- Opakování všech těchto kódů z jedné do druhé databázové logiky je časově náročný úkol.
Výhoda Spring JdbcTemplate
Spring JdbcTemplate odstraňuje všechny výše uvedené problémy JDBC API. Poskytuje vám metody přímého psaní dotazů, takže ušetří spoustu práce a času.
Jarní přístupy Jdbc
Spring framework poskytuje následující přístupy pro přístup k databázi JDBC:
- JdbcTemplate
- NamedParameterJdbcTemplate
- SimpleJdbcTemplate
- SimpleJdbcInsert a SimpleJdbcCall
Třída JdbcTemplate
Je to centrální třída v jarních třídách podpory JDBC. Stará se o vytváření a uvolňování zdrojů, jako je vytvoření a uzavření objektu připojení atd. Nezpůsobí tedy žádný problém, pokud zapomenete připojení ukončit.
Zpracovává výjimky a poskytuje informativní zprávy o výjimkách pomocí tříd výjimek definovaných v org.springframework.dao balík.
Pomocí třídy JdbcTemplate můžeme provádět všechny databázové operace jako je vkládání, aktualizace, mazání a načítání dat z databáze.
Podívejme se na metody jarní třídy JdbcTemplate.
Ne. | Metoda | Popis |
---|---|---|
1) | public int update (řetězcový dotaz) | slouží k vkládání, aktualizaci a mazání záznamů. |
2) | public int update(String query,Object... args) | se používá k vkládání, aktualizaci a mazání záznamů pomocí PreparedStatement s použitím daných argumentů. |
3) | public void spustit (řetězcový dotaz) | se používá k provedení DDL dotazu. |
4) | public T vykonat (String sql, akce připraveného výpisu zpětného volání) | provede dotaz pomocí zpětného volání PreparedStatement. |
5) | veřejný T dotaz (String sql, ResultSetExtractor rse) | se používá k načítání záznamů pomocí ResultSetExtractor. |
6) | veřejný dotaz na seznam (String sql, RowMapper rse) | se používá k načítání záznamů pomocí RowMapper. |
Příklad Spring JdbcTemplate
Předpokládáme, že jste vytvořili následující tabulku v databázi Oracle10g.
create table employee( id number(10), name varchar2(100), salary number(10) );Employee.java
Tato třída obsahuje 3 vlastnosti s konstruktory a settery a getry.
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
Obsahuje jednu vlastnost jdbcTemplate a tři metody saveEmployee(), updateEmployee a 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 se používá k uložení informací o databázi, jako je název třídy ovladače, adresa URL připojení, uživatelské jméno a heslo.
Existuje vlastnost pojmenovaná zdroj dat ve třídě JdbcTemplate typu DriverManagerDataSource. Potřebujeme tedy poskytnout odkaz na objekt DriverManagerDataSource ve třídě JdbcTemplate pro vlastnost zdroje dat.
Zde používáme objekt JdbcTemplate ve třídě EmployeeDao, takže jej předáváme metodou setter, ale můžete použít i konstruktor.
Test.java
Tato třída získá bean ze souboru applicationContext.xml a zavolá metodu saveEmployee(). Můžete také zavolat metody updateEmployee() a deleteEmployee() zrušením komentáře u kódu.
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);*/ } }stáhněte si tento příklad (vyvinutý pomocí MyEclipse IDE)
stáhněte si tento příklad (vyvinutý pomocí Eclipse IDE)