Як атрымаць доступ да базы дадзеных з дапамогай шаблону Spring JDBC?

Spring JDBC template

Шаблон Spring JDBC

Агляд: Як мы ўсе ведаем, што рамкі вясна стала неад'емнай часткай распрацоўкі прыкладанняў на базе Java сучаснага. Рамкі вясной эфектыўна ўдалося ўзяць пад кантроль кожнага аддзела ў свеце распрацоўкі Java. Шаблон JDBC вясны выкарыстоўваецца ў большасці спружыны прыкладанняў JEE для абмену дадзенымі з базай дадзеных.

У гэтым артыкуле я распавяду пра тое, як атрымаць доступ да рэляцыйнай базы дадзеных з дапамогай шаблону JDBC вясны.

Увядзенне: Мы ўсе ведаем пра важнасць рэляцыйных баз дадзеных у распрацоўцы карпаратыўных прыкладанняў. Вясна з'яўляецца адным з шырока выкарыстоўваюцца ў рамках распрацоўкі карпаратыўных прыкладанняў на базе Java. Spring мае розныя модулі, такія як ОРМ, бяспеку, здзелка, JPS, JMS і г.д., каб падтрымаць неабходнасць распрацоўкі прыкладанняў прадпрыемства. Як спружына забяспечвае лёгкадаступныя кампаненты падключаецца модуля, сучасны падыход для распрацоўкі прыкладанняў Java Enterprise выкарыстоўвае магчымасці шырока. У выніку распрацоўкі нашмат хутчэй і больш эфектыўна. Spring прадастаўляе просты падыход для апрацоўкі дзеянняў з базай дадзеных ведаем, як крынічная JDBC шаблону.

Недахопы стандартнага JDBC API: Стандарт JDBC API мае наступныя недахопы.

  • Акрамя выканання асноўнага запыту, вам трэба напісаць шмат кода для апрацоўкі пытанняў навакольнага асяроддзя выканання, як стварэнне злучэння, заяву, ResultSet і г.д..
  • Трэба апрацоўваць кода апрацоўкі выключэнняў асобна.
  • Трэба апрацоўваць транзакцыйных пытанні.

Перавагі спружыннай JDBC шаблону: Шаблон Спринг JDBC мае наступныя перавагі ў параўнанні са звычайным падыходам стандарту JDBC.

  • Ачыстка выкарыстаных рэсурсаў ажыццяўляецца аўтаматычна з дапамогай спружыннага JDBC шаблону. Такім чынам, распрацоўнікам не трэба турбавацца аб вызваленні рэсурсаў. Такім чынам, яна прадухіляе уцечку памяці.
  • Шаблон Spring JDBC апрацоўвае выключэнне і памылкі ў больш эфектыўным спосабам. Ён пераўтворыць JDBC SQLExceptions ў RuntimeExceptions, таму распрацоўнікі могуць справіцца з гэтым больш гнуткім спосабам.
  • Шаблон вясной JDBC таксама пераўтворыць спецыфічныя памылкі пастаўшчыка ў больш значнага паведамлення. Такім чынам, пагрузачна-разгрузачных работ гэтых памылак з'яўляюцца больш эфектыўнымі.

пачатак працы:

In this document, давайце выкарыстоўваць Gradle як інструмент для зборкі, каб пабудаваць наша дадатак. Пачнем з простага прыкладання, які выкарыстоўваецца для захоўвання і здабывання дэталі супрацоўнікаў разам з іх аддзеламі арганізацыі. У нашым прыкладзе, мы будзем мець наступныя атрыбуты аб'екта супрацоўніка:-

  • Id супрацоўнікаў
  • супрацоўнік Імя
  • супрацоўнік Імя па бацьку
  • супрацоўнік Прозвішча
  • Супрацоўнік дэпартамента Id

А аб'ект аддзел мае наступныя атрыбуты:-

  • Id аддзел
  • Назва аддзела

Зараз давайце створым аб'екты Java, якія будуць выкарыстоўвацца для сувязі з базай дадзеных. Нашы POJO класы для гэтых двух сутнасцяў пералічаныя як пад:

Listing1: Прыклад, які паказвае клас Employee

[Code]

package com.home.springjdbc.objects;

грамадскасць клас супрацоўнік {

// супрацоўнік Id

прыватны радок EmpId;

// супрацоўнік Найменне

прыватны радок empFName;

// супрацоўнік імя па бацьку

прыватны радок empMName;

// супрацоўнік Прозвішча

прыватны радок empLName;

// Аддзел ідэнтыфікацыйны нумар супрацоўніка

прыватны радок empDeptId;

грамадскасць супрацоўнік ( радок EmpId, радок empFName, радок empMName,

радок empLName, радок empDeptId ) {

супер();

this.EmpID = EmpID;

this.Rec Rec імя = імя;

this.empMName = empMName;

this.empLName = empLName;

this.empDeptId = empDeptId;

}

/**

* @return EmpId

*/

грамадскасць радок getEmpId () {

return EmpID;

}

/**

* @param EmpID

* EmpId ўсталяваць

*/

грамадскасць анулявання setEmpId ( радок EmpId ) {

this.EmpID = EmpID;

}

/**

* @return empFName

*/

грамадскасць радок getEmpFName () {

return Rec імя;

}

/**

* @param Rec імя

* empFName ўсталяваць

*/

грамадскасць анулявання setEmpFName ( радок empFName ) {

this.Rec Rec імя = імя;

}

/**

* @return empMName

*/

грамадскасць радок getEmpMName () {

return empMName;

}

/**

* @param empMName

* empMName ўсталяваць

*/

грамадскасць анулявання setEmpMName ( радок empMName) {

this.empMName = empMName;

}

 

/**

* @return empLName

*/

грамадскасць радок getEmpLName () {

return empLName;

}

/**

* @param empLName

* empLName ўсталяваць

*/

грамадскасць анулявання setEmpLName ( радок empLName) {

this.empLName = empLName;

}

/**

* @return empDeptId

*/

грамадскасць радок getEmpDeptId () {

return empDeptId;

}

/**

* @param empDeptId

* empDeptId ўсталяваць

*/

грамадскасць анулявання setEmpDeptId ( радок empDeptId ) {

this.empDeptId = empDeptId;

}

/*

* ( ня-Javadoc )

*

* @see java.lang.Object # ToString ()

*/

@ Override

грамадскасць радок ToString () {

return “супрацоўнік [ EmpID =” + EmpID + “, Rec імя =” + Rec імя

+ “, empMName =” + empMName + “, empLName =” + empLName

+ “, empDeptId =” + empDeptId + “]”;

}

}

[/Code]

Listing2: Прыклад, які паказвае Дэпартамента класа

[Code]

package com.home.springjdbc.objects;

грамадскасць клас аддзел {

// аддзел Id

прыватны радок deptId;

// аддзел Імя

прыватны радок DEPTNAME;

грамадскасць аддзел ( радок deptId, радок DEPTNAME) {

супер ();

this.deptId = deptId;

this.DEPTNAME = DEPTNAME;

}

/**

* @return deptId

*/

грамадскасць радок getDeptId () {

return deptId;

}

/**

* @param deptId

* deptId ўсталяваць

*/

грамадскасць анулявання setDeptId ( радок deptId ) {

this.deptId = deptId;

}

/**

* @return DEPTNAME

*/

грамадскасць радок getDeptName () {

return DEPTNAME;

}

/**

* @param DEPTNAME

* DEPTNAME ўсталяваць

*/

грамадскасць анулявання setDeptName ( радок DEPTNAME ) {

this.DEPTNAME = DEPTNAME;

}

/*

* (ня-Javadoc)

*

* @see java.lang.Object # ToString()

*/

@ Override

грамадскасць радок ToString () {

return “аддзел [ deptId =” + deptId + “, DEPTNAME =” + DEPTNAME + “]”;

}

}

[/Code]

Spring прадастаўляе шаблонны клас, вядомы як JdbcTemplate. Гэты клас адказвае за сувязь з SQL і рэляцыйных баз дадзеных JDBC. Пры традыцыйным падыходзе максімум кода JDBC заняты ў кіраванні злучэння апрацоўкі, набыццё рэсурсаў, апрацоўка выключэнняў, і праверка агульная памылка, якая з'яўляецца непачцівыя ў кантэксце таго, што мы спрабуем дасягнуць. JdbcTemplate бярэ на сябе ўсе гэтыя рэчы і як распрацоўшчык, мы павінны засяродзіцца толькі на бізнэс-логіцы. Рэалізацыя ўзор шаблону класа паказана як пры -

Listing3: Прыклад, які паказвае рэалізацыю шаблону JDBC

[Code]

package com.home.springjdbc.dao;

імпартаваць java.sql.Driver;

імпартаваць java.sql.ResultSet;

імпартаваць java.sql.SQLException;

імпартаваць java.util.List;

імпартаваць org.springframework.jdbc.core.JdbcTemplate;

імпартаваць org.springframework.jdbc.core.RowMapper;

імпартаваць org.springframework.jdbc.datasource.SimpleDriverDataSource;

імпартаваць com.home.springjdbc.objects.Employee;

грамадскасць клас EmployeeDAO {

грамадскасць статычны анулявання асноўнай ( String args[] ) {

// простыя DS для тэсту (ня для вытворчасці!)

SimpleDriverDataSource DataSource = новае SimpleDriverDataSource();

dataSource.setDriverClass((Class<? пашыраецца кіроўца>) org.h2.Driver.клас);

dataSource.setUsername( “яе” );

dataSource.setUrl( “JDBC:h2:мем” );

dataSource.setPassword( “” );

JdbcTemplate JdbcTemplate = новае JdbcTemplate(DataSource);

Сістэма.з.Println( “стварэнне табліц” );

jdbcTemplate.execute( “падзенне супрацоўнікаў табліцы, калі існуе” );

jdbcTemplate.execute( “стварыць табліцу супрацоўнікаў(”

+ “ID VARCHAR(25), first_name VARCHAR(255), middle_name VARCHAR(255), last_name VARCHAR(255), deptId VARCHAR(25))”);

Радок[] запісу = “E001 Дын Эндру Робертс D25; E002 Джэф Longman Дын D42; E003 Erin Нэнсі Kirkland D66;”.раскол(“;”);

для ( радок singleRecord : дакументацыя ) {

Радок [] смещ_по_столбцам = singleRecord.split(” “);

Сістэма.з.Printf( ” Даданне запісы супрацоўніка для% s% s% s% s% s п”,смещ_по_столбцам[0], смещ_по_столбцам[1], смещ_по_столбцам[2], смещ_по_столбцам[3], смещ_по_столбцам[4]);

jdbcTemplate.update(“Супрацоўнікі Уставіць у(ID, імя, імя па бацьку, прозвішча, deptId) каштоўнасці(?,?,?,?,?)”,смещ_по_столбцам[0], смещ_по_столбцам[1], смещ_по_столбцам[2], смещ_по_столбцам[3], смещ_по_столбцам[4]);

}

Сістэма.з.Println ( ” Querying for customer records where first_name = ‘Erin’:” );

спіс<супрацоўнік> Вынікі = jdbcTemplate.query(

“select * ад супрацоўнікаў, дзе first_name = ?”,

новае аб'ект[] { “Erin” }, новае RowMapper<супрацоўнік>() {

@ Override

грамадскасць супрацоўнік mapRow(ResultSet RS, дзесятковага RowNum)

кідкі SQLException {

return новае супрацоўнік(rs.getString(“ID”),

rs.getString(“імя”), rs.getString(“імя па бацьку”),

rs.getString(“прозвішча”), rs.getString(“deptId”));

}

});

для (супрацоўнік супрацоўнік : вынікі) {

Сістэма.з.Println(супрацоўнік);

}

}

}

[/Code]

У прыведзеным вышэй прыкладзе, мы стварылі крыніца дадзеных JDBC, выкарыстоўваючы SimpleDriverDataSource з вясны. Затым мы выкарыстоўваем гэты крыніца дадзеных для пабудовы асобніка JdbcTemplate. Пасля таго, як клас JdbcTemplate ствараецца, мы можам лёгка пачаць выклік базы дадзеных. First, мы ствараем табліцу з дапамогай метаду выканання пра шаблон. Затым ўставіць некалькі запісаў з дапамогай метаду абнаўлення шаблону. Нарэшце, мы выкарыстоўваем метад запыту для выбаркі запісаў нашага выбару. У нашым прыкладзе мы выкарыстоўвалі просты запыт для здабывання запісы з табліцы супрацоўнікаў. Але згодна нашаму праекту, мы бачым, што табліца работнік мае дачыненне з табліцай аддзела праз калонку - deptId. Такім чынам, мы можам таксама выкарыстоўваць адзін і той жа код для здабывання запісаў, які злучае гэтыя дзве табліцы. Проста нам трэба змяніць запыт, каб пакласці далучыцца. Прыведзены вышэй код можа быць зменены ў адпаведнасці з -

Listing4: Прыклад, які паказвае мадыфікаваны запыт

[Code]

спіс<супрацоўнік> Вынікі = jdbcTemplate.query(

“выберыце emp.first_name, emp.middle _name, emp.last _name, dept.dept_Name ад супрацоўнікаў Эмі, аддзел аддзел, дзе emp.first_name = ?”,

новае аб'ект[] { “Erin” }, новае RowMapper<супрацоўнік>() {

@ Override

грамадскасць EmployeeDtls mapRow(ResultSet RS, дзесятковага RowNum)

кідкі SQLException {

return новае супрацоўнік( rs.getString(“імя”),

rs.getString(“імя па бацьку”),

rs.getString(“прозвішча”),

rs.getString(“dept_Name “));

}

});

для (EmployeeDtls employeeDtl : вынікі) {

Сістэма.з.Println(employeeDtl);

}

[/Code]

Каб выканаць гэта, мы павінны мець яшчэ адзін клас POJO EmployeeDtls як па -

Listing5: Прыклад, які паказвае EmployeeDtls класа POJO

[Code]

package com.home.springjdbc.objects;

грамадскасць клас EmployeeDtls {

// супрацоўнік Найменне

прыватны радок empFName;

// супрацоўнік імя па бацьку

прыватны радок empMName;

// супрацоўнік Прозвішча

прыватны радок empLName;

// аддзел Імя

прыватны радок DEPTNAME;

/**

* @param Rec імя

* @param empMName

* @param empLName

* @param DEPTNAME

*/

грамадскасць EmployeeDtls(радок empFName, радок empMName, радок empLName,

радок DEPTNAME) {

супер();

this.Rec Rec імя = імя;

this.empMName = empMName;

this.empLName = empLName;

this.DEPTNAME = DEPTNAME;

}

/*

* (ня-Javadoc)

*

* @see java.lang.Object # ToString()

*/

@ Override

грамадскасць радок ToString() {

return “EmployeeDtls [Rec імя =” + Rec імя + “, empMName =” + empMName

+ “, empLName =” + empLName + “, DEPTNAME =” + DEPTNAME + “]”;

}

/**

* @return empFName

*/

грамадскасць радок getEmpFName() {

return Rec імя;

}

/**

* @param Rec імя

* empFName ўсталяваць

*/

грамадскасць анулявання setEmpFName(радок empFName) {

this.Rec Rec імя = імя;

}

/**

* @return empMName

*/

грамадскасць радок getEmpMName() {

return empMName;

}

/**

* @param empMName

* empMName ўсталяваць

*/

грамадскасць анулявання setEmpMName(радок empMName) {

this.empMName = empMName;

}

/**

* @return empLName

*/

грамадскасць радок getEmpLName() {

return empLName;

}

/**

* @param empLName

* empLName ўсталяваць

*/

грамадскасць анулявання setEmpLName(радок empLName) {

this.empLName = empLName;

}

/**

* @return DEPTNAME

*/

грамадскасць радок getDeptName() {

return DEPTNAME;

}

/**

* @param DEPTNAME

* DEPTNAME ўсталяваць

*/

грамадскасць анулявання setDeptName(радок DEPTNAME) {

this.DEPTNAME = DEPTNAME;

}

}

[/Code]
Summary: Так што ў гэтым артыкуле мы бачылі, як вясна JDBC шаблон можа быць выкарыстаны ў Java стандартных і карпаратыўных прыкладанняў на аснове. Акрамя таго, мы абмеркавалі перавагі такога падыходу, і як гэта можа зрабіць развіццё значна хутчэй у параўнанні са стандартнай распрацоўкі на аснове JDBC.

Падагульнім наша абмеркаванне ў выглядзе наступных куля кропак -

  • Вясна стала неад'емнай часткай сучаснай, заснаванай на Java асяроддзя распрацоўкі карпаратыўных прыкладанняў.
  • Вясна мае розныя раздзелы, з якіх, шаблон JDBC з'яўляецца важнай часткай.
  • Шаблон Spring JDBC спрашчае распрацоўку, прымаючы нагрузку набыцця рэсурсаў, кіраванне злучэннямі, апрацоўка выключэнняў, і праверка агульная памылка. Мы, як распрацоўшчык проста трэба сканцэнтравацца на складаных бізнес-сцэнары.
============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share