Управление на данни с JavaFX
Графичните приложения, изградени с JavaFX, често се нуждаят от съхранение и извличане на информация – потребители, настройки, резултати или други структурирани данни. Тъй като JavaFX се фокусира единствено върху изграждането на потребителския интерфейс, за работата с бази данни се използват стандартните механизми на Java и външни технологии.
За тази цел най-често се комбинират JDBC като универсален интерфейс за достъп до бази данни и конкретна система за управление на бази данни, например H2. Тази комбинация позволява ясно разделение между визуалната част на приложението и логиката за работа с данни.
JDBC слой – връзка между Java и базата данни
JDBC (Java Database Connectivity) представлява стандартен интерфейс за работа с релационни бази данни в Java. Той дефинира начин за създаване на връзка, изпълнение на SQL заявки и обработка на резултатите, независимо от конкретната база данни.
Чрез JDBC приложението не комуникира директно с базата, а използва драйвер, който превежда заявките към конкретната система за управление на бази данни. Това позволява смяна на базата без промяна на бизнес логиката.
Основните обекти, с които работи JDBC, са:
- Connection – активна връзка към базата данни
- Statement / PreparedStatement – изпълнение на SQL заявки
- ResultSet – резултат от SELECT заявка
H2 – вградена релационна база данни
За настолни Java приложения често се използват леки вградени бази данни. H2 е такава база, реализирана изцяло на Java, която се използва чрез JDBC и поддържа стандартен SQL синтаксис.
H2 може да работи във файл, което означава, че данните се съхраняват локално и се запазват между стартиранията на приложението. Това я прави подходяща за JavaFX приложения без нужда от външен сървър.
За да бъде използвана в Maven проект, е необходимо да се добави зависимостта към H2 JDBC драйвера.
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.4.240</version>
</dependency>
Създаване на връзка към базата данни
Връзката към базата се реализира в отделен клас, който централизира конфигурацията и позволява повторна употреба:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DatabaseConnection {
private static final String URL = "jdbc:h2:./data/librarydb";
private static final String USER = "sa";
private static final String PASSWORD = "";
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}
Тук се задават:
- URL – пътя до H2 база в локален файл (./data/librarydb)
- USER и PASSWORD – стандартни стойности за H2
- Методът getConnection() връща готова връзка за използване от DAO или други класове.
При успешно стартиране, трябва да се визуализира следният прозорец: