Hibernate
Создание базы данных MySQL и таблицы для хранения объектов определенного класса.
Реализация доступа к базе данных с использованием JDBC и выполнение базовых операций CRUD.
Создание сущности JPA для соответствующей таблицы базы данных.
Использование Hibernate для работы с базой данных: чтение, запись, обновление и удаление записей.
Пример
pom.hml
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>BDJunior</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version><scope>provided</scope></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-java8</artifactId><version>6.0.0.Alpha7</version><type>pom</type></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.1.0</version></dependency></dependencies></project>
Connector
public class Connector{final StandardServiceRegistry registry;SessionFactory sessionFactory;public Connector() {registry = new StandardServiceRegistryBuilder().configure() // configures settings from hibernate.cfg.xml.build();sessionFactory = new MetadataSources( registry).buildMetadata().buildSessionFactory();}public Session getSession(){return sessionFactory.openSession();}}
Db
public class Db {private static final String URL = "jdbc:mysql://localhost:3306";private static final String USER = "root";private static final String PASSWORD = "";public static List<Book> findBookByAuthor(String author) {Connector connector = new Connector();try (Session session = connector.getSession()) {return session.createQuery("from Book where author = '" + author + "'", Book.class).getResultList();} catch (Exception e) {e.printStackTrace();}return null;}public static List<Book> findAll() {Connector connector = new Connector();try (Session session = connector.getSession()) {return session.createQuery("from Book", Book.class).getResultList();} catch (Exception e) {e.printStackTrace();}return null;}public static void updateName(Long id, String name) {Connector connector = new Connector();try (Session session = connector.getSession()) {String hql = "from Book where id = :id";Query<Book> query = session.createQuery(hql, Book.class);query.setParameter("id", id);Book book = query.getSingleResult();System.out.println(book);book.setName(name);session.beginTransaction();session.update(book);session.getTransaction().commit();} catch (Exception e) {e.printStackTrace();}}public static void delete(Long id) {Connector connector = new Connector();try (Session session = connector.getSession()) {Query<Book> query = session.createQuery("from Book where id = :id", Book.class);query.setParameter("id", id);Book book = query.getSingleResult();session.beginTransaction();session.delete(book);session.getTransaction().commit();} catch (Exception e) {e.printStackTrace();}}public static void creatRow(String name, String author) {Connector connector = new Connector();Session session = connector.getSession();Book book = new Book();book.setName(name);book.setAuthor(author);session.beginTransaction();session.save(book);session.getTransaction().commit();session.close();}public static void createTable() {try (Connection connection = DriverManager.getConnection(URL, USER, PASSWORD)) {Statement statement = connection.createStatement();statement.execute("drop schema `books`");statement.execute("create schema `books`");statement.execute("create table `books` . `books` (" +"`id` bigint not null auto_increment, " +"`name` varchar(100) not null," +"`author` varchar(100) not null," +"primary key (`id`));");statement.execute("insert into `books` . `books` (`id`, `name`, `author`)\n" +"values (1, 'Война и мир', 'Толстой')," +"(2, 'Евгений Онегин', 'Пушкин')," +"(3, 'Тихий Дон', 'Шолохов')," +"(4, 'Мастер и Маргарита', 'Булгаков')," +"(5, 'Идиот', 'Достоевский')," +"(6, 'Сто лет одиночества', 'Габриэль Гарсиа Маркес')," +"(7, 'Преступление и наказание', 'Достоевский')," +"(8, 'Робинзон Крузо', 'Даниэль Дефо')," +"(9, 'Анна Каренина', 'Толстой')," +"(10, 'Дон Кихот', 'Мигель де Сервантес Сааведра');");ResultSet set = statement.executeQuery("select * from books.books where author = 'Толстой'");while (set.next()) {System.out.println(set.getString(3) + " " + set.getString(2) + " " + set.getLong(1));}} catch (SQLException e) {throw new RuntimeException();}}}
hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><propertyname="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property><propertyname="hibernate.connection.url">jdbc:mysql://localhost:3306/books</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password"/><propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><property name="show_sql">true</property><mapping class="org.example.models.Book" /></session-factory></hibernate-configuration>
Main
public static void main(String[] args) throws Exception {// Db.createTable();// Db.creatRow("Барышня крестьянка", "Пушкин");List<Book> booksByAuthor = Db.findBookByAuthor("Толстой");System.out.println(booksByAuthor);}// [Book(id=1, name=Война и мир, author=Толстой), Book(id=9, name=Анна Каренина, author=Толстой)]