Add cache for database

This commit is contained in:
Данил
2025-05-22 15:52:25 +07:00
parent fd627789c4
commit 3a08578555
@@ -28,12 +28,14 @@ public class DataBase {
private static DataBase instance;
private final Connection connection;
private final List<TaskDB> TaskDBList = new ArrayList<>();
private final List<User> DataBaseCache = new ArrayList<>();
private final Timer UpdateDBTimer = new Timer();
public void close() {
UpdateDBTimer.cancel();
for (TaskDB i : TaskDBList)
i.execute();
DataBaseCache.clear();
TaskDBList.clear();
try {
connection.close();
@@ -56,6 +58,7 @@ public class DataBase {
public void run() {
for (TaskDB i : TaskDBList)
i.execute();
DataBaseCache.clear();
TaskDBList.clear();
}
}, 1_800_000,1_800_000);
@@ -97,6 +100,7 @@ public class DataBase {
saveUser_stmt.setString(2, user.getPassword());
saveUser_stmt.setString(3, Serialize(user.getTaskList()));
TaskDBList.add(new TaskDB(saveUser_stmt));
DataBaseCache.add(user);
}
public void UpdateTaskList(User user) throws SQLException {
@@ -107,6 +111,11 @@ public class DataBase {
}
public User FindUser(String login) throws SQLException {
for (User i : DataBaseCache) {
if(i.getLogin().equals(login))
return i;
}
PreparedStatement getUser_stmt = connection.prepareStatement("SELECT * FROM user WHERE login = ?");
getUser_stmt.setString(1, login);
ResultSet resultSet = getUser_stmt.executeQuery();