Java и бази данни - От JDBC до Hibernate
- Теория
- Код
Java и бази данни
Java предоставя различни инструменти за работа с бази данни, които позволяват на разработчиците да създават мощни приложения, способни да управляват и анализират големи обеми данни.
JDBC (Java Database Connectivity)
JDBC предоставя стандартен API за взаимодействие с релационни бази данни, като позволява изпълнението на SQL заявки и обработката на резултатите.
Пример: Създаване на Връзка с База Данни
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JdbcExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/myDatabase";
String username = "username";
String password = "password";
try (Connection connection = DriverManager.getConnection(url, username, password)) {
System.out.println("Връзката с базата данни е успешна!");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
JPA (Java Persistence API) и Hibernate
JPA и Hibernate предоставят средства за ORM (Object-Relational Mapping), които улесняват мапирането на Java обекти към таблици в базата данни.
Пример: Дефиниране на Ентитет
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class User {
@Id
private Long id;
private String name;
// Гетъри и сетъри
}
Работа с данни
Java и базите данни в комбинация позволяват създаването на мощни приложения за управление на данни, включително уеб приложения и системи за управление на съдържанието.
Пример: Извличане на Данни
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DataRetrievalExample {
public static void main(String[] args) {
// Предполага се, че връзката е създадена (както в JDBC примера по-горе)
try (Statement statement = connection.createStatement()) {
ResultSet resultSet = statement.executeQuery("SELECT * FROM users");
while (resultSet.next()) {
System.out.println("Потребител: " + resultSet.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Този урок представя как Java може да се интегрира с различни видове бази данни и как може да се използва за създаване, обработка и управлен ие на данни. В следващите лекции ще разгледаме допълнителни аспекти на работата с данни в Java, включително транзакции, управление на сесии и използване на JPA и Hibernate за по-сложни задачи по управление на данни.
JDBC - Свързване с база данни и изпълнение на SQL заявки
import java.sql.*;
public class JdbcExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/myDatabase";
String username = "username";
String password = "password";
try (Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement()) {
// Изпълнение на SQL заявка
ResultSet resultSet = statement.executeQuery("SELECT * FROM users");
while (resultSet.next()) {
System.out.println(resultSet.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
JPA - Дефиниране на Ентитети и Извършване на Операции
import javax.persistence.*;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// Гетъри и сетъри
}
public class JpaExample {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("my-persistence-unit");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
User user = new User();
user.setName("Иван Иванов");
em.persist(user);
em.getTransaction().commit();
em.close();
emf.close();
}
}
Hibernate - Работа с Сесии и Транзакции
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class HibernateExample {
public static void main(String[] args) {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
User user = new User();
user.setName("Мария Петрова");
session.save(user);
transaction.commit();
session.close();
}
}
Работа с Напреднали Заявки
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
public class AdvancedQueryExample {
public static void main(String[] args) {
EntityManager em = ... // Създаване на EntityManager
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<User> query = cb.createQuery(User.class);
Root<User> user = query.from(User.class);
query.select(user).where(cb.equal(user.get("name"), "Иван Иванов"));
TypedQuery<User> typedQuery = em.createQuery(query);
List<User> result = typedQuery.getResultList();
result.forEach(u -> System.out.println(u.getName()));
em.close();
}
}