jan-survival-games/src/main/java/de/polyfish0/survivalGames/database/BaseRepository.java
2025-05-18 18:52:56 +02:00

47 lines
1.4 KiB
Java

package de.polyfish0.survivalGames.database;
import org.hibernate.Session;
import org.hibernate.Transaction;
import java.util.concurrent.CompletableFuture;
public abstract class BaseRepository<T> {
private final Class<T> clazz;
public BaseRepository(Class<T> clazz) {
this.clazz = clazz;
}
public CompletableFuture<Void> save(Object entity) {
return CompletableFuture.runAsync(() -> {
try (Session session = HibernateUtil.getSession()) {
Transaction tx = session.beginTransaction();
session.persist(entity);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
}
});
}
public <T> CompletableFuture<T> findById(Class<T> clazz, Long id) {
return CompletableFuture.supplyAsync(() -> {
try (Session session = HibernateUtil.getSession()) {
return session.get(clazz, id);
} catch (Exception e) {
e.printStackTrace();
return null;
}
});
}
public CompletableFuture<Void> delete(T entity) {
return CompletableFuture.runAsync(() -> {
try (Session session = HibernateUtil.getSession()) {
Transaction tx = session.beginTransaction();
session.remove(entity);
tx.commit();
}
});
}
}