Si për të hyrë në bazën e të dhënave duke përdorur Spring JDBC template?

Spring JDBC template

Spring JDBC template

Përmbledhje: Siç e dimë të gjithë se kuadri pranvera është bërë një pjesë thelbësore e moderne për zhvillimin e aplikimit Java bazuar. Korniza pranvera ka arritur në mënyrë efektive për të marrë kontrollin e çdo departamenti në zhvillimin e botës Java. JDBC template e pranverës është përdorur në shumicën e pranverës aplikacioneve Jee bazë për të komunikuar me bazën e të dhënave.

Në këtë artikull unë do të flas mbi se si për të hyrë në një bazë të dhënash relacionale duke përdorur template JDBC e pranverës.

Parathënie: Ne të gjithë e dimë rëndësinë e të dhënave relacionale në ndërmarrje zhvillimin e aplikimit. Pranvera është një nga kornizat përdorur gjerësisht në zhvillimin e aplikimit ndërmarrje Java bazuar. Pranvera ka module të ndryshme si ORM, Siguri, transaksion, JPS, JMS etj për të mbështetur nevojën e ndërmarrjeve zhvillimin e aplikimit. Si ofron pranverë komponente të gatshme në dispozicion për të plug-in, qasja moderne për zhvillimin e ndërmarrjeve të aplikimit Java përdor tiparet gjerësisht. Si rezultat i zhvillimit është shumë më e shpejtë dhe efikase. Spring ofron një qasje të thjeshtë për të trajtuar aktivitetet e bazës së të dhënave e di si pranverë JDBC template.

Disavantazhet e API standarde JDBC: Standard JDBC API ka të metat e mëposhtme.

  • Përveç ekzekutimin e pyetje kryesore, ju duhet të shkruani një shumë të kodit për të trajtuar çështjet e mjedisit ekzekutimit si duke krijuar lidhje, deklarata, ResultSet etj.
  • Duhet të merren me përjashtim kodin trajtimin ndaras.
  • Nevoja për të trajtuar çështjet e transaksioneve.

Avantazhet e pranverës JDBC template: Spring JDBC template ka përparësitë e mëposhtme në krahasim me qasjen normale e JDBC standarde.

  • Pastrimi i burimeve të përdorura bëhet automatikisht nga pranverë JDBC template. Pra, zhvilluesit nuk duhet të shqetësojë për lëshimin e burimeve. Për këtë arsye ajo parandalon rrjedhjet e kujtesës.
  • Spring JDBC template merret me përjashtim dhe gabime në një mënyrë më efikase. Ai konverton SQLExceptions JDBC në RuntimeExceptions, kështu që zhvilluesit mund të trajtojë atë në mënyrë më fleksibile.
  • Pranvera JDBC template gjithashtu konverton gabimet shitësi specifike në një mesazh të mirë kuptimplotë. Kështu handlings e këtyre gabimeve janë më të efektshme.

Si T'ia Fillohet:

In this document, le të përdorim gradle si një ndërtuar mjet për të ndërtuar kërkesën tonë. Le të fillojmë me një aplikim të thjeshtë që përdoret për të ruajtur dhe rifitoj të dhënat e punonjësve së bashku me departamentet e tyre të një organizate. Në shembullin tonë, ne do të kemi atributet e mëposhtme të objektit të punonjësve:-

  • punonjës Id
  • Punonjës Emri
  • Emri punonjës Mesme
  • Punonjës Mbiemri
  • Departamenti punonjës Id

Dhe objekti departamenti ka atributet në vijim:-

  • Departamenti Id
  • Emri Department

Tani le të krijuar objektet java cilat do të përdoren për të komunikuar me bazën e të dhënave. Klasat tona Pojo për këto dy subjekte janë të listuara si në:

Listing1: Mostra tregon Klasa punonjës

[Code]

package com.home.springjdbc.objects;

publik klasë Punonjes {

// Punonjësi Id

privat string empId;

// Punonjësi Emri i parë

privat string empFName;

// Emri mesme punonjës

privat string empMName;

// Punonjësi Emri fundit

privat string empLName;

// Departamenti punonjës Id

privat string empDeptId;

publik Punonjes ( string empId, string empFName, string empMName,

string empLName, string empDeptId ) {

super();

this.EmpID = EmpID;

this.Rec Emri Rec = Emri;

this.empMName = empMName;

this.empLName = empLName;

this.empDeptId = empDeptId;

}

/**

* @return empId

*/

publik string getEmpId () {

return EmpID;

}

/**

* @param EmpID

* empId për të vendosur

*/

publik pavlefshme setEmpId ( string empId ) {

this.EmpID = EmpID;

}

/**

* @return empFName

*/

publik string getEmpFName () {

return Emri Rec;

}

/**

* @param Emri Rec

* empFName për të vendosur

*/

publik pavlefshme setEmpFName ( string empFName ) {

this.Rec Emri Rec = Emri;

}

/**

* @return empMName

*/

publik string getEmpMName () {

return empMName;

}

/**

* @param empMName

* empMName për të vendosur

*/

publik pavlefshme setEmpMName ( string empMName) {

this.empMName = empMName;

}

 

/**

* @return empLName

*/

publik string getEmpLName () {

return empLName;

}

/**

* @param empLName

* empLName për të vendosur

*/

publik pavlefshme setEmpLName ( string empLName) {

this.empLName = empLName;

}

/**

* @return empDeptId

*/

publik string getEmpDeptId () {

return empDeptId;

}

/**

* @param empDeptId

* empDeptId për të vendosur

*/

publik pavlefshme setEmpDeptId ( string empDeptId ) {

this.empDeptId = empDeptId;

}

/*

* ( jo-Javadoc )

*

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

*/

@ Override

publik string toString () {

return “Punonjes [ EmpID =” + EmpID + “, Emri Rec =” + Emri Rec

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

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

}

}

[/Code]

Listing2: Mostra tregon Klasa Departamentit

[Code]

package com.home.springjdbc.objects;

publik klasë Departamenti {

// Departamenti Id

privat string deptId;

// Departamenti Emri

privat string deptName;

publik Departamenti ( string deptId, string deptName) {

super ();

this.deptId = deptId;

this.deptName = deptName;

}

/**

* @return deptId

*/

publik string getDeptId () {

return deptId;

}

/**

* @param deptId

* deptId për të vendosur

*/

publik pavlefshme setDeptId ( string deptId ) {

this.deptId = deptId;

}

/**

* @return deptName

*/

publik string getDeptName () {

return deptName;

}

/**

* @param deptName

* deptName për të vendosur

*/

publik pavlefshme setDeptName ( string deptName ) {

this.deptName = deptName;

}

/*

* (jo-Javadoc)

*

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

*/

@ Override

publik string toString () {

return “Departamenti [ deptId =” + deptId + “, deptName =” + deptName + “]”;

}

}

[/Code]

Spring ofron një klasë template njohur si JdbcTemplate. Kjo klasë është përgjegjës për komunikimin me SQL bazat e të dhënave relacionale dhe JDBC. Në qasjen tradicionale maksimumi i kodit JDBC është e zënë në menaxhimin e lidhjes trajtimin, blerja e burimeve, trajtimi përjashtim, dhe kontrollin gabim të përgjithshëm e cila është irreverent në kontekstin e asaj që ne jemi duke u përpjekur për të arritur. JdbcTemplate kujdeset për të gjitha këto gjëra dhe si zhvillues duhet të përqëndrohet vetëm në logjikën e biznesit. Një zbatim mostër e klasës template është treguar si në -

Listing3: Mostra tregon zbatimin e JDBC template

[Code]

package com.home.springjdbc.dao;

import java.sql.Driver;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.List;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.jdbc.core.RowMapper;

import org.springframework.jdbc.datasource.SimpleDriverDataSource;

import com.home.springjdbc.objects.Employee;

publik klasë EmployeeDAO {

publik i pandryshueshëm pavlefshme kryesor ( String args[] ) {

// DS thjeshta për provë (jo për prodhim!)

SimpleDriverDataSource datasource = i ri SimpleDriverDataSource();

dataSource.setDriverClass((Class<? shtrihet shofer>) org.h2.Driver.klasë);

dataSource.setUsername( “të saj” );

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

dataSource.setPassword( “” );

JdbcTemplate JdbcTemplate = i ri JdbcTemplate(datasource);

Sistem.jashtë.println( “Krijimi i tabelave” );

jdbcTemplate.execute( “bjerë punonjësit tryezë nëse ekziston” );

jdbcTemplate.execute( “krijuar punonjësit tryezë(”

+ “id VARCHAR(25), FIRST_NAME VARCHAR(255), middle_name VARCHAR(255), VARCHAR LAST_NAME(255), deptId VARCHAR(25))”);

Varg[] të dhënat = “E001 Dean Andrew Roberts D25; E002 Jeff Longman Dean D42; E003 Erin Nancy Kirkland D66;”.ndarje(“;”);

për ( string singleRecord : të dhëna ) {

Varg [] cols = singleRecord.split(” “);

Sistem.jashtë.printf( ” Shtimi rekord punonjës për% s% s% s% s% s n”,cols[0], cols[1], cols[2], cols[3], cols[4]);

jdbcTemplate.update(“Punonjësit INSERT NË(id, Emri, middle_name, mbiemri, deptId) vlerat(?,?,?,?,?)”,cols[0], cols[1], cols[2], cols[3], cols[4]);

}

Sistem.jashtë.println ( ” Querying for customer records where first_name = ‘Erin’:” );

Listë<Punonjes> rezulton = jdbcTemplate.query(

“select * nga punonjësit ku FIRST_NAME = ?”,

i ri Objekt[] { “Irlandë” }, i ri RowMapper<Punonjes>() {

@ Override

publik mapRow punonjës(rs ResultSet, int rowNum)

hedh SQLException {

return i ri Punonjes(rs.getString(“id”),

rs.getString(“Emri”), rs.getString(“middle_name”),

rs.getString(“mbiemri”), rs.getString(“deptId”));

}

});

për (punonjës punonjës : Rezultate) {

Sistem.jashtë.println(punonjes);

}

}

}

[/Code]

Në shembullin e mësipërm, ne kemi ngritur një burim i të dhënave JDBC duke përdorur SimpleDriverDataSource nga pranvera. Ne pastaj të përdorin këtë burim të të dhënave për të ndërtuar shembull JDBCTemplate. Pasi klasa JDBCTemplate është krijuar, ne lehtë mund të fillojnë duke e quajtur bazën e të dhënave. First, ne krijojmë tabelën duke përdorur ekzekutimin metodën e template. Pastaj ne të futur disa shënime duke përdorur metodën e përditësimit të template. Së fundi ne përdorim metodën pyetje të shkoj të marr të dhënat e zgjedhjes tonë. Në shembullin tonë kemi përdorur një pyetje të thjeshtë për të shkoj të marr të dhënat nga tabela punonjës. Por si për dizajnin tonë ne shohim se tabela punonjësi ka një lidhje me tabelën e departamentit nëpërmjet kolonës - deptId. Pra, ne mund të përdorni të njëjtin kod të shkoj të marr të dhënat e bashkuar këto dy tavolina. Vetëm ne kemi nevojë për të ndryshuar pyetje për të vënë një të bashkohen. Kodi i mësipërm mund të ndryshohet si në -

Listing4: Mostra tregon modifikuar pyetje

[Code]

Listë<Punonjes> rezulton = jdbcTemplate.query(

“zgjidhni emp.first_name, _name emp.middle, _name emp.last, dept.dept_Name nga punonjësit emp, Departamenti dept ku emp.first_name = ?”,

i ri Objekt[] { “Irlandë” }, i ri RowMapper<Punonjes>() {

@ Override

publik EmployeeDtls mapRow(rs ResultSet, int rowNum)

hedh SQLException {

return i ri Punonjes( rs.getString(“Emri”),

rs.getString(“middle_name”),

rs.getString(“mbiemri”),

rs.getString(“dept_Name “));

}

});

për (EmployeeDtls employeeDtl : Rezultate) {

Sistem.jashtë.println(employeeDtl);

}

[/Code]

Për të ekzekutuar këtë, ne duhet të kemi një tjetër EmployeeDtls klasit Pojo si në -

Listing5: Mostra tregon EmployeeDtls klasit Pojo

[Code]

package com.home.springjdbc.objects;

publik klasë EmployeeDtls {

// Punonjësi Emri i parë

privat string empFName;

// Emri mesme punonjës

privat string empMName;

// Punonjësi Emri fundit

privat string empLName;

// Departamenti Emri

privat string deptName;

/**

* @param Emri Rec

* @param empMName

* @param empLName

* @param deptName

*/

publik EmployeeDtls(string empFName, string empMName, string empLName,

string deptName) {

super();

this.Rec Emri Rec = Emri;

this.empMName = empMName;

this.empLName = empLName;

this.deptName = deptName;

}

/*

* (jo-Javadoc)

*

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

*/

@ Override

publik string toString() {

return “EmployeeDtls [Emri Rec =” + Emri Rec + “, empMName =” + empMName

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

}

/**

* @return empFName

*/

publik string getEmpFName() {

return Emri Rec;

}

/**

* @param Emri Rec

* empFName për të vendosur

*/

publik pavlefshme setEmpFName(string empFName) {

this.Rec Emri Rec = Emri;

}

/**

* @return empMName

*/

publik string getEmpMName() {

return empMName;

}

/**

* @param empMName

* empMName për të vendosur

*/

publik pavlefshme setEmpMName(string empMName) {

this.empMName = empMName;

}

/**

* @return empLName

*/

publik string getEmpLName() {

return empLName;

}

/**

* @param empLName

* empLName për të vendosur

*/

publik pavlefshme setEmpLName(string empLName) {

this.empLName = empLName;

}

/**

* @return deptName

*/

publik string getDeptName() {

return deptName;

}

/**

* @param deptName

* deptName për të vendosur

*/

publik pavlefshme setDeptName(string deptName) {

this.deptName = deptName;

}

}

[/Code]
Summary: Pra, në këtë artikull ne kemi parë se si pranverë JDBC template mund të përdoret në Java standarde dhe ndërmarrje aplikacionet bazuar. Ne kemi diskutuar gjithashtu avantazhet e kësaj qasjeje dhe se si ajo mund të bëjë zhvillimi shumë më të shpejtë në krahasim me standarde zhvillimin JDBC bazuar.

Le të përmbledhim diskutimin tonë në formën e mëposhtme pika plumb -

  • Pranvera është bërë një pjesë thelbësore e mjedis modern të zhvillimit të aplikimit ndërmarrje Java bazuar.
  • Pranvera ka seksione të ndryshme, nga të cilat, template JDBC është një pjesë e rëndësishme.
  • Spring JDBC template lehtëson zhvillimin duke marrë ngarkesën e përvetësimit të burimeve, menaxhimi i lidhjes, trajtimi përjashtim, dhe gabimi përgjithshme kontrolluar. Ne si zhvillues vetëm duhet të përqëndrohemi në skenarin komplekse të biznesit.
============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share