47 lines
1.4 KiB
Java
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();
|
|
}
|
|
});
|
|
}
|
|
}
|