- תבנית JDBC אביבית
- הבנת הצורך ב- Spring JDBC Template
- היתרון של Spring JDBC Template
- שיעורי תבנית JDBC
- דוגמה למחלקה JdbcTemplate
אביב JdbcTemplate הוא מנגנון רב עוצמה לחיבור למסד הנתונים וביצוע שאילתות SQL. זה משתמש באופן פנימי ב-JDBC API, אבל מבטל הרבה בעיות של JDBC API.
בעיות של JDBC API
הבעיות של JDBC API הן כדלקמן:
- אנחנו צריכים לכתוב הרבה קוד לפני ואחרי ביצוע השאילתה, כמו יצירת חיבור, הצהרה, סגירת תוצאות, חיבור וכו'.
- עלינו לבצע קוד טיפול בחריג בלוגיקה של מסד הנתונים.
- אנחנו צריכים לטפל בעסקה.
- חזרה על כל הקודים הללו מלוגיקה של מסד נתונים אחד לשני היא משימה שגוזלת זמן.
היתרון של Spring JdbcTemplate
Spring JdbcTemplate מבטל את כל הבעיות שהוזכרו לעיל של JDBC API. זה מספק לך שיטות לכתוב את השאילתות ישירות, כך שזה חוסך הרבה עבודה וזמן.
גישות אביב Jdbc
מסגרת Spring מספקת את הגישות הבאות לגישה למסד הנתונים של JDBC:
- JdbcTemplate
- NamedParameterJdbcTemplate
- SimpleJdbcTemplate
- SimpleJdbcInsert ו-SimpleJdbcCall
מחלקה JdbcTemplate
זהו המחלקה המרכזית בשיעורי התמיכה של Spring JDBC. זה דואג ליצירה ושחרור של משאבים כמו יצירה וסגירה של אובייקט חיבור וכו'. אז זה לא יוביל לשום בעיה אם תשכח לסגור את החיבור.
הוא מטפל בחריג ומספק הודעות חריגות אינפורמטיביות בעזרת מחלקות חריגות המוגדרות ב- org.springframework.dao חֲבִילָה.
אנו יכולים לבצע את כל פעולות מסד הנתונים בעזרת מחלקה JdbcTemplate כגון הכנסה, עדכון, מחיקה ושליפה של הנתונים ממסד הנתונים.
בוא נראה את השיטות של מחלקת אביב JdbcTemplate.
לא. | שיטה | תיאור |
---|---|---|
1) | public int update (שאילתת מחרוזת) | משמש להוספה, עדכון ומחיקת רשומות. |
2) | public int update(String query,Object... args) | משמש להוספה, עדכון ומחיקת רשומות באמצעות PreparedStatement באמצעות ארגומנטים נתונים. |
3) | public void execute (שאילתת מחרוזת) | משמש לביצוע שאילתת DDL. |
4) | public T execute(String sql, PreparedStatement Callback Action) | מבצע את השאילתה באמצעות PreparedStatement callback. |
5) | שאילתת T ציבורית (String sql, ResultSetExtractor rse) | משמש כדי להביא רשומות באמצעות ResultSetExtractor. |
6) | שאילתת רשימה ציבורית (String sql, RowMapper rse) | משמש לאחזור רשומות באמצעות RowMapper. |
דוגמה של Spring JdbcTemplate
אנו מניחים שיצרת את הטבלה הבאה בתוך מסד הנתונים של Oracle10g.
create table employee( id number(10), name varchar2(100), salary number(10) );Employee.java
מחלקה זו מכילה 3 מאפיינים עם בנאים ו-seter ו-getters.
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
הוא מכיל מאפיין אחד jdbcTemplate ושלוש שיטות saveEmployee(), updateEmployee ו-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
ה DriverManagerDataSource משמש להכיל את המידע על מסד הנתונים כגון שם מחלקה של מנהל ההתקן, כתובת URL לחיבור, שם משתמש וסיסמה.
יש נכס בשם מקור מידע במחלקה JdbcTemplate מסוג DriverManagerDataSource. לכן, עלינו לספק את ההפניה של אובייקט DriverManagerDataSource במחלקה JdbcTemplate עבור מאפיין datasource.
כאן, אנו משתמשים באובייקט JdbcTemplate במחלקה EmployeeDao, אז אנו מעבירים אותו בשיטת setter אבל אתה יכול להשתמש גם בבנאי.
Test.java
מחלקה זו מקבלת את השעועית מהקובץ applicationContext.xml וקוראת למתודה saveEmployee(). אתה יכול גם לקרוא לשיטת updateEmployee() ו-deleteEmployee() על ידי ביטול הערות לקוד.
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);*/ } }הורד את הדוגמה הזו (פותח באמצעות MyEclipse IDE)
הורד את הדוגמה הזו (פותח באמצעות Eclipse IDE)