Další vývoj Hibernate

napojeni-database
jakub 1 year ago
parent d7134f48bc
commit 5f28885b1a
  1. 21
      pom.xml
  2. 14
      src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java
  3. 8
      src/main/java/xyz/soukup/mineconomiaCoreV2/database/HibernateUtil.java
  4. 31
      src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerDataDatabase.java
  5. 28
      src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerInit.java
  6. 23
      src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java
  7. 2
      src/main/resources/config.yml

@ -69,25 +69,30 @@
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- JPA API -->
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>3.0.0</version>
<scope>compile</scope>
</dependency>
<!-- Hibernate Core --> <!-- Hibernate Core -->
<dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId> <artifactId>hibernate-core</artifactId>
<version>6.6.1.Final</version> <version>6.1.0.Final</version>
<scope>compile</scope>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core-jakarta -->
<!-- MySQL JDBC Driver --> <!-- MySQL JDBC Driver -->
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version> <version>8.0.33</version>
</dependency> <scope>compile</scope>
<!-- JPA API -->
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>3.0.0</version>
</dependency> </dependency>
<!-- Hibernate Annotations --> <!-- Hibernate Annotations -->

@ -1,17 +1,25 @@
package xyz.soukup.mineconomiaCoreV2; package xyz.soukup.mineconomiaCoreV2;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import xyz.soukup.mineconomiaCoreV2.database.HibernateUtil; import xyz.soukup.mineconomiaCoreV2.database.HibernateUtil;
import xyz.soukup.mineconomiaCoreV2.database.PlayerInit;
import xyz.soukup.mineconomiaCoreV2.tractor.giveTractorCommand; import xyz.soukup.mineconomiaCoreV2.tractor.giveTractorCommand;
import xyz.soukup.mineconomiaCoreV2.variables.PlayerData;
import java.util.HashMap;
import java.util.Objects; import java.util.Objects;
import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.plugin; import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.plugin;
public final class MineconomiaCoreV2 extends JavaPlugin { public final class MineconomiaCoreV2 extends JavaPlugin {
private static MineconomiaCoreV2 instance; private static MineconomiaCoreV2 instance;
public static HashMap<Player, PlayerData> PlayersData = new HashMap<>();
@Override @Override
public void onEnable() { public void onEnable() {
@ -20,6 +28,10 @@ public final class MineconomiaCoreV2 extends JavaPlugin {
getLogger().info("STARTING MINECONOMIA CORE"); getLogger().info("STARTING MINECONOMIA CORE");
plugin.saveDefaultConfig(); plugin.saveDefaultConfig();
PluginManager pluginManager = getServer().getPluginManager();
HibernateUtil.newSession();
//pluginManager.registerEvents(new PlayerInit(), plugin);
// Tractor registration // Tractor registration
Objects.requireNonNull(plugin.getCommand("tractor")).setExecutor(new giveTractorCommand()); Objects.requireNonNull(plugin.getCommand("tractor")).setExecutor(new giveTractorCommand());
@ -31,7 +43,7 @@ public final class MineconomiaCoreV2 extends JavaPlugin {
@Override @Override
public void onDisable() { public void onDisable() {
// Plugin shutdown logic // Plugin shutdown logic
HibernateUtil.shutdown(); plugin.saveConfig();
} }
public static MineconomiaCoreV2 getInstance() { public static MineconomiaCoreV2 getInstance() {

@ -1,21 +1,15 @@
package xyz.soukup.mineconomiaCoreV2.database; package xyz.soukup.mineconomiaCoreV2.database;
import jakarta.persistence.Query;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaQuery;
import org.bukkit.scoreboard.Criteria;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
import org.hibernate.Transaction; import org.hibernate.Transaction;
import org.hibernate.boot.MetadataSources; import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.model.internal.QueryBinder;
import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import xyz.soukup.mineconomiaCoreV2.core.sharedValues; import xyz.soukup.mineconomiaCoreV2.core.sharedValues;
import xyz.soukup.mineconomiaCoreV2.variables.PlayerData; import xyz.soukup.mineconomiaCoreV2.variables.PlayerData;
import java.util.List;
import java.util.Objects;
import java.util.Properties; import java.util.Properties;
import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.config; import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.config;

@ -1,18 +1,41 @@
package xyz.soukup.mineconomiaCoreV2.database; package xyz.soukup.mineconomiaCoreV2.database;
import jakarta.persistence.TypedQuery;
import jakarta.persistence.criteria.CriteriaBuilder; import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Predicate;
import jakarta.persistence.criteria.Root;
import org.hibernate.Session;
import xyz.soukup.mineconomiaCoreV2.variables.PlayerData; import xyz.soukup.mineconomiaCoreV2.variables.PlayerData;
import java.util.List;
public class PlayerDataDatabase { public class PlayerDataDatabase {
public static void savePlayerDataToDatabase(PlayerData playerData){ public static void saveToDatabase(PlayerData playerData){
HibernateUtil.saveToDatabase(playerData); HibernateUtil.saveToDatabase(playerData);
} }
public static PlayerData getPlayerDataFromDatabase(String nickname){ public static PlayerData getFromDatabase(String nickname){
CriteriaBuilder criteriaBuilder = HibernateUtil.newSession().getCriteriaBuilder();
return null; Session session = HibernateUtil.newSession();
CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
CriteriaQuery<PlayerData> criteriaQuery = criteriaBuilder.createQuery(PlayerData.class);
Root<PlayerData> root = criteriaQuery.from(PlayerData.class);
Predicate predicate = criteriaBuilder.equal(root.get("PlayerData"), nickname);
criteriaQuery.where(predicate);
TypedQuery<PlayerData> query = session.createQuery(criteriaQuery);
List<PlayerData> results = query.getResultList();
session.close();
if (results.isEmpty()){
return null;
}
return results.getFirst();
} }
} }

@ -1,5 +1,29 @@
package xyz.soukup.mineconomiaCoreV2.database; package xyz.soukup.mineconomiaCoreV2.database;
public class PlayerInit { import org.bukkit.entity.Player;
public static void onJoin(){} import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import xyz.soukup.mineconomiaCoreV2.variables.PlayerData;
import static xyz.soukup.mineconomiaCoreV2.MineconomiaCoreV2.PlayersData;
public class PlayerInit implements Listener {
@EventHandler
public static void onJoin(PlayerJoinEvent event){
Player player = event.getPlayer();
String name = player.getDisplayName();
PlayerData playerData = PlayerDataDatabase.getFromDatabase(name);
if (playerData == null){
playerData = PlayerData.generateFromPlayer(player);
PlayerDataDatabase.saveToDatabase(playerData);
}
PlayersData.put(player, playerData);
}
} }

@ -4,6 +4,7 @@ import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue; import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType; import jakarta.persistence.GenerationType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import org.bukkit.entity.Player;
//Definování Member classy pro databázi a další manipulace //Definování Member classy pro databázi a další manipulace
@ -11,11 +12,11 @@ import jakarta.persistence.Id;
public class PlayerData { public class PlayerData {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.AUTO)
private int id; private int id;
private String nickname; private String nickname;
private String uuid;
private int online; private int online;
private float money; private float money;
@ -35,14 +36,6 @@ public class PlayerData {
this.nickname = nickname; this.nickname = nickname;
} }
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public int getOnline() { public int getOnline() {
return online; return online;
} }
@ -58,4 +51,14 @@ public class PlayerData {
public void setMoney(float money) { public void setMoney(float money) {
this.money = money; this.money = money;
} }
public static PlayerData generateFromPlayer(Player p){
PlayerData playerData = new PlayerData();
playerData.setMoney(0);
playerData.setOnline(1);
playerData.setNickname(p.getDisplayName());
return playerData;
}
} }

@ -1,7 +1,7 @@
version: 1.0 version: 1.0
language: "czech.yml" language: "czech.yml"
database: database:
host: localhost host: uceni.soukup.xyz
port: 3306 port: 3306
user: mcore user: mcore
password: mcore password: mcore

Loading…
Cancel
Save