package de.polyfish0.survivalGames.database; import org.hibernate.Session; import org.hibernate.Transaction; import java.util.concurrent.CompletableFuture; public abstract class BaseRepository { private final Class clazz; public BaseRepository(Class clazz) { this.clazz = clazz; } public CompletableFuture 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 CompletableFuture findById(Class 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 delete(T entity) { return CompletableFuture.runAsync(() -> { try (Session session = HibernateUtil.getSession()) { Transaction tx = session.beginTransaction(); session.remove(entity); tx.commit(); } }); } }