- Bahar JDBC Şablonu
- Bahar JDBC Şablonu ihtiyacını anlama
- Bahar JDBC Şablonunun Avantajı
- JDBC Şablon sınıfları
- JdbcTemplate sınıfı örneği
Bahar Jdbc Şablonu veritabanına bağlanmak ve SQL sorgularını yürütmek için güçlü bir mekanizmadır. Dahili olarak JDBC api'yi kullanır, ancak JDBC API'nin birçok sorununu ortadan kaldırır.
tarihformat.format
JDBC API'nin Sorunları
JDBC API'nin sorunları aşağıdaki gibidir:
- Sorguyu yürütmeden önce ve sonra bağlantı oluşturma, ifade, sonuç kümesini kapatma, bağlantı vb. gibi birçok kod yazmamız gerekiyor.
- Veritabanı mantığı üzerinde istisna işleme kodu yapmamız gerekiyor.
- İşlemi halletmemiz gerekiyor.
- Tüm bu kodların bir veritabanı mantığından diğerine tekrarlanması zaman alıcı bir iştir.
Baharın Avantajı JdbcTemplate
Spring JdbcTemplate, JDBC API'nin yukarıda belirtilen tüm sorunlarını ortadan kaldırır. Sorguları doğrudan yazmanız için yöntemler sağlar, böylece çok fazla iş ve zaman tasarrufu sağlar.
Bahar Jdbc Yaklaşımları
Spring çerçevesi, JDBC veritabanı erişimi için aşağıdaki yaklaşımları sağlar:
- Jdbc Şablonu
- AdlandırılmışParametreJdbcTemplate
- SimpleJdbcTemplate
- SimpleJdbcInsert ve SimpleJdbcCall
JdbcTemplate sınıfı
Spring JDBC destek sınıflarının merkezi sınıfıdır. Bağlantı nesnesinin oluşturulması, kapatılması vb. kaynakların oluşturulması ve serbest bırakılmasıyla ilgilenir. Dolayısıyla bağlantıyı kapatmayı unutmanız durumunda herhangi bir sorunla karşılaşmazsınız.
İstisnaları ele alır ve tanımlı istisna sınıflarının yardımıyla bilgilendirici istisna mesajlarını sağlar. org.springframework.dao paket.
Veritabanına veri ekleme, güncelleme, silme, alma gibi tüm veritabanı işlemlerini JdbcTemplate sınıfı yardımıyla gerçekleştirebiliyoruz.
Spring JdbcTemplate sınıfının metodlarını görelim.
Python'da
HAYIR. | Yöntem | Tanım |
---|---|---|
1) | public int update(Dize sorgusu) | Kayıt eklemek, güncellemek ve silmek için kullanılır. |
2) | public int update(String query,Object... args) | Verilen bağımsız değişkenleri kullanarak, PrettyStatement'ı kullanarak kayıtları eklemek, güncellemek ve silmek için kullanılır. |
3) | genel geçersiz yürütme (Dize sorgusu) | DDL sorgusunu yürütmek için kullanılır. |
4) | public T çalıştır(String sql, PrettyStatementCallback eylemi) | Sorguyu, PrettyStatement geri çağırmayı kullanarak yürütür. |
5) | genel T sorgusu (String sql, ResultSetExtractor rse) | ResultSetExtractor'ı kullanarak kayıtları getirmek için kullanılır. |
6) | genel Liste sorgusu (String sql, RowMapper rse) | RowMapper'ı kullanarak kayıtları getirmek için kullanılır. |
Bahar JdbcTemplate Örneği
Oracle10g veritabanı içerisinde aşağıdaki tabloyu oluşturduğunuzu varsayıyoruz.
create table employee( id number(10), name varchar2(100), salary number(10) );Çalışan.java
Bu sınıf yapıcılar, ayarlayıcı ve alıcılar ile 3 özellik içerir.
package com.javatpoint; public class Employee { private int id; private String name; private float salary; //no-arg and parameterized constructors //getters and setters }ÇalışanDao.java
Bir jdbcTemplate özelliği ve saveEmployee(), updateEmployee ve deleteEmployee() yöntemlerini içerir.
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
DriverManagerDataSource sürücü sınıfı adı, bağlantı URL'si, kullanıcı adı ve şifre gibi veritabanına ilişkin bilgileri barındırmak için kullanılır.
adında bir mülk var veri kaynağı DriverManagerDataSource türünün JdbcTemplate sınıfında. Bu yüzden datasource özelliği için JdbcTemplate sınıfında DriverManagerDataSource nesnesinin referansını sağlamamız gerekiyor.
Burada EmployeeDao sınıfında JdbcTemplate nesnesini kullanıyoruz yani setter metodu ile aktarıyoruz ama siz yapıcı da kullanabilirsiniz.
Test.java
Bu sınıf, bean'i applicationContext.xml dosyasından alır ve saveEmployee() yöntemini çağırır. Kodun yorumunu kaldırarak da updateEmployee() ve deleteEmployee() yöntemini çağırabilirsiniz.
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);*/ } }bu örneği indirin (MyEclipse IDE kullanılarak geliştirilmiştir)
bu örneği indirin (Eclipse IDE kullanılarak geliştirildi)