JDBC vs Hibernate


JDBC (Java DataBase Connectivity) to interfejs pozwalający na łączenia się z bazą danych. Wykorzystuje takie klasy jak Statement i PreparedStatement.

Hibernate to framework który implementuje mapowanie obiektowo-relacyjne w Javie. Czyli pozwala na automatyczne mapowanie obiektów javy (Encje) na tabele relacyjne. Hibernate daje możliwość  pracy na tych tabelach w sposób obiektowy, jednak wszystkie operacje związane z bazą danych wykonuje z wykorzystaniem interfejsu JDBC albo JTA.






 Klasa testująca dodawanie wiersza za pomocą klasy PreparedStatement


package myhibernate.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class InsertPrepareStatementApp {

static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
static final String URL = "jdbc:mysql://localhost:3306/bazatestowa2";
static final String USERNAME = "newuser";
static final String PASSWORD = "123";

public static void main(String[] args) {

Connection conn = null;
PreparedStatement pstmt = null;
try {
Class.forName(DRIVER_CLASS);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);

String insert = "INSERT INTO car(car_id, brand) VALUES(14, ?)";
pstmt = conn.prepareStatement(insert);
pstmt.setString(1, "Mercedes");
pstmt.execute();

System.out.println("end");

} catch (SQLException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
} finally {

try {
if (pstmt != null) {
pstmt.close();
}
} catch (SQLException ex) { }

try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}


❗ Wynik działania w konsoli: 



❗Wynik w bazie danych: 

1. tabela car







 Klasa testująca czytanie wierszy za pomocą klasy Statement


package myhibernate.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ReadStatementApp {

static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
static final String URL = "jdbc:mysql://localhost:3306/bazatestowa2";
static final String USERNAME = "newuser";
static final String PASSWORD = "123";

public static void main(String[] args) {

Connection conn = null;
Statement stmt = null;
try {
Class.forName(DRIVER_CLASS);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
stmt = conn.createStatement();
String sql = "SELECT car_id, brand, owner_id FROM car";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
int carId = rs.getInt("car_id");
String brand = rs.getString("brand");
int ownerId = rs.getInt("owner_id");
System.out.println("carId: " + carId + " brand: " + brand + " ownerId: " + ownerId);
}
rs.close();

} catch (SQLException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
} finally {

try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException ex) { }

try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}

❗ Wynik działania w konsoli: 






 Klasa testująca kasowanie wierszy za pomocą klasy PreparedStatement


package myhibernate.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DeletePrepareStatementApp {

static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
static final String URL = "jdbc:mysql://localhost:3306/bazatestowa2";
static final String USERNAME = "newuser";
static final String PASSWORD = "123";

public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
try {
Class.forName(DRIVER_CLASS);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);

String delete = "DELETE FROM car WHERE owner_id is null";
pstmt = conn.prepareStatement(delete);
int row = pstmt.executeUpdate();
                        System.out.println("liczba wierszy skasowanych: " + row);

} catch (SQLException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
} finally {

try {
if (pstmt != null) {
pstmt.close();
}
} catch (SQLException ex) { }

try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}

❗ Wynik działania w konsoli: 





Brak komentarzy:

Prześlij komentarz