Как да получите достъп до база данни с помощта на Spring JDBC шаблон?

Spring JDBC template

Spring JDBC шаблон

Преглед: Както всички знаем, че рамката на пролетта се превърна в съществена част от съвременното развитие прилагане Java базиран на. Рамката на пролетта е ефективно успя да поеме контрола на всеки отдел в света на Java развитие. The JDBC шаблона на пролетта се използва в повечето от пролетта базирани приложения JEE да комуникира с базата данни.

В тази статия ще говорим по начина на достъп на релационна база данни с помощта на JDBC шаблона на пролетта.

Въвеждане: Ние всички знаем, че е важно да релационна база данни в разработката на приложения на предприятието. Пролетта е един от най-широко използваните рамки в Java базирано приложение за развитие предприятието. Spring има различни модули като ORM, сигурност, транзакция, JPS, JMS и т.н., за да подкрепи необходимостта от разработване на приложения предприятието. Както пролетта осигурява лесно достъпни компоненти за щепселни, съвременния подход за развитие на предприятията Java приложения използва функциите екстензивно. В резултат на развитието е много по-бързо и ефективно. Spring осигурява прост подход да се справят с дейности в базата данни знаят през пролетта JDBC шаблон.

Недостатъци на стандарт JDBC API: Standard JDBC API има следните недостатъци.

  • Освен изпълнението на основната заявка, трябва да пиша много код, за да се справят с проблемите на изпълнение на околната среда, като създаване на връзка, изявление, ResultSet т.н..
  • Необходимо е да се справи с изключение код боравене отделно.
  • Необходимо е да се справят с транзакционни въпроси.

Предимства на пролетта JDBC шаблон: Spring JDBC шаблон има следните предимства в сравнение с нормалния подход на стандарт JDBC.

  • Почистване на използваните ресурси се извършва автоматично от пролетта JDBC шаблон. Така че разработчиците не трябва да се притеснявам за освобождаване на ресурси. Следователно тя не позволява изтичане на памет.
  • Spring JDBC шаблон дръжки изключение и грешки в един по-ефективен начин. Той преобразува JDBC SQLExceptions в RuntimeExceptions, така че разработчиците могат да се справят в по-гъвкав начин.
  • Шаблонът за пролетта JDBC също преобразува продавач специфични грешки в по-добра смислено послание. Така че на манипулации на тези грешки са по-ефективни.

Приготвяме се да започнем:

In this document, нека използваме Gradle като инструмент строеж за изграждане на нашето приложение. Нека да започнем с един прост приложение се използва за съхраняване и извличане на данните за служителите, заедно с техните отдели на една организация. В нашия пример, ще имаме следните атрибути на обекта на служител:-

  • Id на служителите
  • Служител Име
  • Служител презиме
  • Служител Фамилия
  • Id на служителите отдел

И на отдел обект има следните атрибути:-

  • Id катедра
  • Името на катедра

Сега нека създадем Java обекти, които ще бъдат използвани, за да комуникира с базата данни. Нашите POJO класове за тези две лица са посочени като под:

Listing1: Проба, показваща Employee Class

[Code]

package com.home.springjdbc.objects;

публичен клас Служител {

// Служителят Id

частен String empId;

// Първото име на служителите

частен String empFName;

// бащино на служител

частен String empMName;

// Фамилното име на служителите

частен String empLName;

// Отделът за служител Id

частен String empDeptId;

публичен Служител ( String empId, String empFName, String empMName,

String empLName, String 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 ( String empId ) {

this.EmpID = EmpID;

}

/**

* @return на empFName

*/

публичен низ getEmpFName () {

return Rec име;

}

/**

* @param Rec име

* на empFName да зададете

*/

публичен анулира setEmpFName ( String empFName ) {

this.Rec Rec име = име;

}

/**

* @return на empMName

*/

публичен низ getEmpMName () {

return empMName;

}

/**

* @param empMName

* на empMName да зададете

*/

публичен анулира setEmpMName ( String empMName) {

this.empMName = empMName;

}

 

/**

* @return на empLName

*/

публичен низ getEmpLName () {

return empLName;

}

/**

* @param empLName

* на empLName да зададете

*/

публичен анулира setEmpLName ( String empLName) {

this.empLName = empLName;

}

/**

* @return на empDeptId

*/

публичен низ getEmpDeptId () {

return empDeptId;

}

/**

* @param empDeptId

* на empDeptId да зададете

*/

публичен анулира setEmpDeptId ( String empDeptId ) {

this.empDeptId = empDeptId;

}

/*

* ( които не са-Javadoc )

*

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

*/

@ Override

публичен String ToString () {

return “Служител [ EmpID =” + EmpID + “, Rec име =” + Rec име

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

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

}

}

[/Code]

Listing2: Проба, показваща отдел Class

[Code]

package com.home.springjdbc.objects;

публичен клас отдел {

// Отделението Id

частен String deptId;

// Име на отдел

частен String deptName;

публичен отдел ( String deptId, String deptName) {

супер ();

this.deptId = deptId;

this.deptName = deptName;

}

/**

* @return на deptId

*/

публичен String getDeptId () {

return deptId;

}

/**

* @param deptId

* на deptId да зададете

*/

публичен анулира setDeptId ( String deptId ) {

this.deptId = deptId;

}

/**

* @return на deptName

*/

публичен String getDeptName () {

return deptName;

}

/**

* @param deptName

* на deptName да зададете

*/

публичен анулира setDeptName ( String deptName ) {

this.deptName = deptName;

}

/*

* (които не са-Javadoc)

*

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

*/

@ Override

публичен String ToString () {

return “отдел [ deptId =” + deptId + “, deptName =” + deptName + “]”;

}

}

[/Code]

Spring дава образец клас, известен като JdbcTemplate. Този клас е отговорен за комуникацията с SQL релационни бази данни и JDBC. В традиционния подход максимума на код JDBC е заета в управлението боравене връзка, придобиване на ресурсите, обработка на изключения, и проверка обща грешка, която е непочтителен в контекста на това, което ние се опитваме да постигнем. The 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 опцията[] ) {

// прости DS за изпитване (не за производство!)

SimpleDriverDataSource Datasource = нов SimpleDriverDataSource();

dataSource.setDriverClass((Class<? разширява шофьор>) org.h2.Driver.клас);

dataSource.setUsername( “тя” );

dataSource.setUrl( “JDBC:h2:Mem” );

dataSource.setPassword( “” );

JdbcTemplate JdbcTemplate = нов JdbcTemplate(източник на данни);

Система.навън.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 Ерин Нанси Kirkland D66;”.разцепен(“;”);

за ( String singleRecord : записи ) {

Низ [] Графи = singleRecord.split(” “);

Система.навън.ФОРМАТ( ” Добавяне на запис служител за% S% S% S% S% S н”,Графи[0], Графи[1], Графи[2], Графи[3], Графи[4]);

jdbcTemplate.update(“служители поставете в(документ за самоличност, първо име, презиме, фамилно име, deptId) стойности(?,?,?,?,?)”,Графи[0], Графи[1], Графи[2], Графи[3], Графи[4]);

}

Система.навън.println ( ” Querying for customer records where first_name = ‘Erin’:” );

списък<Служител> води = jdbcTemplate.query(

“select * от служителите където first_name = ?”,

нов обект[] { “Ерин” }, нов RowMapper<Служител>() {

@ Override

публичен mapRow Employee(ResultSet RS, Int ROWNUM)

хвърля SQLException {

return нов Служител(rs.getString(“документ за самоличност”),

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 _името, emp.last _името, dept.dept_Name от служители EMP, отдел отдел, където emp.first_name = ?”,

нов обект[] { “Ерин” }, нов RowMapper<Служител>() {

@ Override

публичен EmployeeDtls mapRow(ResultSet RS, Int 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 {

// Първото име на служителите

частен String empFName;

// бащино на служител

частен String empMName;

// Фамилното име на служителите

частен String empLName;

// Име на отдел

частен String deptName;

/**

* @param Rec име

* @param empMName

* @param empLName

* @param deptName

*/

публичен EmployeeDtls(String empFName, String empMName, String empLName,

String deptName) {

супер();

this.Rec Rec име = име;

this.empMName = empMName;

this.empLName = empLName;

this.deptName = deptName;

}

/*

* (които не са-Javadoc)

*

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

*/

@ Override

публичен String ToString() {

return “EmployeeDtls [Rec име =” + Rec име + “, empMName =” + empMName

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

}

/**

* @return на empFName

*/

публичен низ getEmpFName() {

return Rec име;

}

/**

* @param Rec име

* на empFName да зададете

*/

публичен анулира setEmpFName(String empFName) {

this.Rec Rec име = име;

}

/**

* @return на empMName

*/

публичен низ getEmpMName() {

return empMName;

}

/**

* @param empMName

* на empMName да зададете

*/

публичен анулира setEmpMName(String empMName) {

this.empMName = empMName;

}

/**

* @return на empLName

*/

публичен низ getEmpLName() {

return empLName;

}

/**

* @param empLName

* на empLName да зададете

*/

публичен анулира setEmpLName(String empLName) {

this.empLName = empLName;

}

/**

* @return на deptName

*/

публичен String getDeptName() {

return deptName;

}

/**

* @param deptName

* на deptName да зададете

*/

публичен анулира setDeptName(String deptName) {

this.deptName = deptName;

}

}

[/Code]
Summary: Така че в тази статия видяхме как пролетта JDBC шаблон може да се използва в Java базирани на стандартни и корпоративни приложения. Ние също така се обсъжда предимствата на този подход и как тя може да се направи за развитието много по-бързо в сравнение със стандартната JDBC основава развитието.

Нека обобщим нашата дискусия под формата на следната куршум точки -

  • Spring се превърна в съществена част от съвременната Java базиран среда за разработка на приложения предприятието.
  • Spring има различни раздели, от които, шаблона 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