• 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
JDBC Configuration

 
#1

Merhaba arkadaslar.
Bu bolumde Spring’te JDBC (Java database connectivity technology ) ‘nin kullanimini inceleyecegiz. Burada JDBC konusunu uzun uzun anlatmayacagim.
JDBC bolumlerinden sonra Spring’in JPA ile entegrasyonunu inceleyecegiz.

More Maven Dependency

Oncelikle pom.xml dosyamiza spring-jdbc dependency tanimini eklememiz gereklidir.
Veritabani yonetim sistemi (VTYS) / Relational database management system (RDBMS) olarak

Oracle dependency ekledigimizde sorun yasamamak icin repository de eklememiz gereklidir.
MySQL ve Oracle Dependency tanimlarini ekleyelim.

pom.xml

<properties>
....
<oracle.version>11.2.0.3</oracle.version>
<mysql.version>6.0.4</mysql.version>
...
</properties>

<repositories>
<repository>
<id>codelds</id>
<url>https://code.lds.org/nexus/content/groups/main-repo</url>
</repository>
</repositories>

<dependencies>


<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>${oracle.version}</version>
</dependency>


<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>

</dependencies>

JDBC Configuration

Veritabanina baglanmamiz icin gerekli olan bilgileri properties dosyasinda tutacagiz.
Bunun icin daha once olusturdugumuz source folder olan resources dizini altinda /jdbc/jdbc.properties dosyasi olusturduk. Siz de bu dosya icerigini kendinize uygun sekilde ayarlayabilirsiniz.

jdbc.properties

## Oracle configuration

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thinAngrylocalhost:1521:xe
jdbc.username=Levent
jdbc.password=123456

## MySQL configuration

##jdbc.driverClassName=com.mysql.jdbc.Driver //is deprecated
#jdbc.driverClassName=com.mysql.cj.jdbc.Driver
#jdbc.url=jdbc:mysql://localhost:3306/springjdbc?serverTimezone=UTC      
#jdbc.username=root
#jdbc.password=
resources properties

[Resim: resources-properties.jpg]


Create Table

SQL developer uzerinden basit olarak Person tablosu olusturduk. Benzer sekilde hangi VTYS kullanacaksaniz bir tablo olusturabilirsiniz;


person table

[Resim: person-table.jpg]

mysql-create-table


[Resim: mysql-create-table.png]

Database Connections & DataSources

Veritabani baglantilarini (database connection) javax.sql.DataSource ile yonetebiliriz (manage). DataSource , Connection’lari saglar ve yonetir (provide & manage)

DriverManagerDataSource , en basit javax.sql.DataSource implementation’dir.

Simdi de uygulamamizi kodlamaya baslayalim , oncelikle model sinifimizi olusturalim ;

Person.java

package _24.jdbc.model;
public class Person {

private int id;
private String name;
private String surname;
private int birthYear;

public Person(int id, String name, String surname, int birthYear) {
super();
this.id = id;
this.name = name;
this.surname = surname;
this.birthYear = birthYear;
}
      //getters and setters
...
}
Simdi de DAO (Data Access Object) Pattern’ina uygun sekilde interface ve implemantation siniflarimizi yazalim ;

PersonDAO.java

package _24.jdbc.dao;

import java.util.List;

import _24.jdbc.model.Person;

public interface PersonDAO {

public void insert(Person person);
public Person getPersonById(int id);
public List<Person> getAllPersons();
public void update(Person person);
public void delete(int id);
       public void deleteAllPersons();
}
PersonDAOImpl.java

package _24.jdbc.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.sql.DataSource;

import _24.jdbc.model.Person;

public class PersonDAOImpl implements PersonDAO {

//Watch out for mysql;
//http://stackoverflow.com/questions/8147447/use-mysql-lower-case-table-names-to-1
private final static String INSERT_PERSON = "insert into person (id, name, surname,birthYear) values (?, ?, ?,?)";
private final static String SELECT_BYID = "select * from person where id=?";
private final static String ALL_SELECT = "select * from person";
private final static String UPDATE_PERSON = "update person set name=? , surname=? , birthYear=? where id=?";
private final static String DELETE_PERSON = "delete from person where id=?";
private final static String DELETE_PERSON_ALL = "delete from person";

private DataSource dataSource;

public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}

@Override
public void insert(Person person) {

try {
Connection connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(INSERT_PERSON);
preparedStatement.setInt(1, person.getId());
preparedStatement.setString(2, person.getName());
preparedStatement.setString(3, person.getSurname());
preparedStatement.setInt(4, person.getBirthYear());
preparedStatement.executeUpdate();
preparedStatement.close();

// logging
System.out.println("Person is inserted..." + person);
} catch (SQLException e) {
e.printStackTrace();
}
}

@Override
public Person getPersonById(int id) {
Person person = null;
try {
Connection connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(SELECT_BYID);
preparedStatement.setInt(1, id);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
String name = resultSet.getString("name");
String surname = resultSet.getString("surname");
int birthYear = resultSet.getInt("birthYear");
person = new Person(id, name, surname, birthYear);

// logging
System.out.println("Person is found..." + person);
}
resultSet.close();
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}

return person;

}

@Override
public List<Person> getAllPersons() {

List<Person> personList = new ArrayList<Person>();
try {
Connection connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(ALL_SELECT);
ResultSet resultSet = preparedStatement.executeQuery();

while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String surname = resultSet.getString("surname");
int birthYear = resultSet.getInt("birthYear");
Person person = new Person(id, name, surname, birthYear);
personList.add(person);
}
// logging
System.out.println("Person list...");
for (Person person : personList) {
System.out.println(person);
}
resultSet.close();
preparedStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return personList;

}

@Override
public void update(Person person) {

try {

Connection connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(UPDATE_PERSON);
preparedStatement.setString(1, person.getName());
preparedStatement.setString(2, person.getSurname());
preparedStatement.setInt(3, person.getBirthYear());
preparedStatement.setInt(4, person.getId());
preparedStatement.executeUpdate();
preparedStatement.close();

// logging
System.out.println("Person is updated..." + person);
} catch (SQLException e) {
e.printStackTrace();
}

}

@Override
public void delete(int id) {

try {

Connection connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(DELETE_PERSON);
preparedStatement.setInt(1, id);
preparedStatement.executeUpdate();
preparedStatement.close();

// logging
System.out.println("Person is deleted... Id : " + id);
} catch (SQLException e) {
e.printStackTrace();
}
}

@Override
public void deleteAllPersons() {
try {

Connection connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(DELETE_PERSON_ALL);
preparedStatement.executeUpdate();
preparedStatement.close();

// logging
System.out.println("All Persons are deleted...");
} catch (SQLException e) {
e.printStackTrace();
}
}

}
24.spring.jdbc.xml

XML konfigurasyon dosyamizi inceleyecek olursak;
Oncelikle PropertyPlaceholderConfigurer sinifini kullaniyoruz. location property degeri icin ekledigimiz jdbc.properties dosyamizin path bilgisini veriyoruz.
Daha sonrasinda DataSource implemantation olarak DriverManagerDataSource sinifini kullaniyoruz. $ karakteri yardimi ile jdbc.properties dosyamizda yer alan bilgileri yaziyoruz.
PersonDAOImpl sinifi icin setter injection teknigini kullaniyoruz ve dataSource property’si icin DriverManagerDataSource bean’inini kullaniyoruz.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsiConfusedchemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/be...-beans.xsd">

<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>jdbc/jdbc.properties</value>
</property>
</bean>

<bean id="dataSourceId"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>

<bean id="personDAOImplId" class="_24.jdbc.dao.PersonDAOImpl">
<property name="dataSource" ref="dataSourceId" />
</bean>
</beans>
Simdi de test sinifimizi yazalim ;

SpringJDBCTest.java

package _24.jdbc.test;

import java.sql.SQLException;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import _24.jdbc.dao.PersonDAO;
import _24.jdbc.model.Person;

public class SpringJDBCTest {

public static void main(String[] args) throws SQLException {
ApplicationContext ctx = new ClassPathXmlApplicationContext("24.spring.jdbc.xml");

PersonDAO pService = ctx.getBean(PersonDAO.class);

// create person object
Person person1 = new Person(1, "Lvnt", "Erguder", 1989);

// insert
pService.insert(person1);

// find
pService.getPersonById(1);

// update
person1.setName("Levent");
pService.update(person1);

// delete
pService.delete(1);

Person person2 = new Person(2, "James", "Gosling", 1955);
Person person3 = new Person(3, "Joshua", "Bloch", 1961);

pService.insert(person2);
pService.insert(person3);

// getAllPersons
pService.getAllPersons();

// deleteAllPersons
pService.deleteAllPersons();

((ClassPathXmlApplicationContext) ctx).close();

}
}
Ornegimizi calistirdigimizda;

Person is inserted...Person [id=1, name=Lvnt, surname=Erguder, birthYear=1989]
Person is found...Person [id=1, name=Lvnt, surname=Erguder, birthYear=1989]
Person is updated...Person [id=1, name=Levent, surname=Erguder, birthYear=1989]
Person is deleted... Id : 1
Person is inserted...Person [id=2, name=James, surname=Gosling, birthYear=1955]
Person is inserted...Person [id=3, name=Joshua, surname=Bloch, birthYear=1961]
Person list...
Person [id=2, name=James, surname=Gosling, birthYear=1955]
Person [id=3, name=Joshua, surname=Bloch, birthYear=1961]
All Persons are deleted...


Github kaynak dosyalar/ source folder
leventerguder/injavawetrust-spring-tutorial

dowland pdf
https://www.injavawetrust.com/spring-18-spring-jdbc/#

alıntıdır



Bul
Alıntı


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  JDBC Nedir? Giriş dalaylama 0 3,079 12-06-2017, Saat: 00:18
Son Mesaj: dalaylama
  JDBC Driver Veritabanı URL’leri sempatik141 0 3,072 12-06-2017, Saat: 00:12
Son Mesaj: sempatik141
  JDBC Veritabanı Bağlantısı sempatik141 0 2,736 12-06-2017, Saat: 00:08
Son Mesaj: sempatik141
  JDBC Transaction Kavramı sempatik141 0 2,724 12-06-2017, Saat: 00:06
Son Mesaj: sempatik141
  JDBC Transaction Örneği sempatik141 0 2,772 12-06-2017, Saat: 00:03
Son Mesaj: sempatik141

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Bu konuyu görüntüleyen kullanıcı(lar):
1 Ziyaretçi

   
Türkçe Çeviri: Emre KRMN, Kodlayanlar MyBB, © 2002-2024 MyBB Group.  



Merih Forum® bilgi paylaşım platformu. 2015-∞ Tüm hakları saklıdır.