diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 22a9058dae1845023b76f38bb4b925d829ab5fe1..f6d0b4d4a5e8f2fc9869c77e44311e033706f66a 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -6,6 +6,11 @@
       <option name="name" value="Central Repository" />
       <option name="url" value="https://repo.maven.apache.org/maven2" />
     </remote-repository>
+    <remote-repository>
+      <option name="id" value="jitpack.io" />
+      <option name="name" value="jitpack.io" />
+      <option name="url" value="https://jitpack.io" />
+    </remote-repository>
     <remote-repository>
       <option name="id" value="sonatype" />
       <option name="name" value="sonatype" />
diff --git a/pom.xml b/pom.xml
index 63a2e5da1daceaafe6a26062e0205842acc81809..5e9f94563de7204256951ee8b80d17f3dc0b28a6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -67,6 +67,10 @@
             <id>placeholderapi</id>
             <url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
         </repository>
+        <repository>
+            <id>jitpack.io</id>
+            <url>https://jitpack.io</url>
+        </repository>
     </repositories>
 
     <dependencies>
@@ -80,7 +84,7 @@
         <dependency>
             <groupId>org.mariadb.jdbc</groupId>
             <artifactId>mariadb-java-client</artifactId>
-            <version>3.0.2-rc</version>
+            <version>3.1.2</version>
         </dependency>
         <dependency>
             <groupId>me.clip</groupId>
@@ -94,5 +98,11 @@
             <version>5.4</version>
             <scope>provided</scope>
         </dependency>
+        <!-- Version du 22 Avril 2023 -->
+        <dependency>
+            <groupId>com.github.SofianeLasri</groupId>
+            <artifactId>bjLoquent</artifactId>
+            <version>6729e4b</version>
+        </dependency>
     </dependencies>
 </project>
diff --git a/src/main/java/com/slprojects/slcraftplugin/Main.java b/src/main/java/com/slprojects/slcraftplugin/Main.java
index feaaef0c9da5c8cc8c23737e77a4c7707ff1f8b4..10b7d73cd740544c27f9df1712101fb20fa4183c 100644
--- a/src/main/java/com/slprojects/slcraftplugin/Main.java
+++ b/src/main/java/com/slprojects/slcraftplugin/Main.java
@@ -7,6 +7,7 @@ import com.slprojects.slcraftplugin.parallelTasks.InternalWebServer;
 import com.slprojects.slcraftplugin.parallelTasks.events.PeriodicEvent;
 import com.slprojects.slcraftplugin.parallelTasks.dataHandlers.PlayerDataHandler;
 import com.slprojects.slcraftplugin.utils.ConsoleLog;
+import com.slprojects.slcraftplugin.utils.Database;
 import me.clip.placeholderapi.PlaceholderAPI;
 import net.luckperms.api.LuckPerms;
 import net.luckperms.api.cacheddata.CachedMetaData;
@@ -27,6 +28,7 @@ import org.bukkit.plugin.java.JavaPlugin;
 import org.json.simple.JSONObject;
 import org.mariadb.jdbc.MariaDbPoolDataSource;
 
+import javax.xml.crypto.Data;
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;
@@ -52,6 +54,7 @@ public final class Main extends JavaPlugin implements Listener {
     public PlayerDataHandler playerDataHandler;
     public Wild wildCommand;
     public PeriodicEvent periodicEvent;
+    public static Connection databaseConnection = null;
 
     @Override
     public void onEnable() {
@@ -83,6 +86,11 @@ public final class Main extends JavaPlugin implements Listener {
         }
 
         // Plugin startup logic
+        try {
+            databaseConnection = Database.bddOpenConn();
+        } catch (SQLException e) {
+            throw new RuntimeException(e);
+        }
         saveDefaultConfig();
         reloadConfig();
         config = getConfig();
@@ -113,6 +121,12 @@ public final class Main extends JavaPlugin implements Listener {
         ConsoleLog.danger("Plugin désactivé, au revoir!");
 
         getServer().getOnlinePlayers().forEach(player -> playerDataHandler.quitEvent(player));
+
+        try {
+            Database.bddCloseConn();
+        } catch (SQLException e) {
+            throw new RuntimeException(e);
+        }
     }
 
     @EventHandler(priority = EventPriority.HIGHEST)
diff --git a/src/main/java/com/slprojects/slcraftplugin/models/UserSetting.java b/src/main/java/com/slprojects/slcraftplugin/models/UserSetting.java
new file mode 100644
index 0000000000000000000000000000000000000000..9693752dedaeaa2bc53d3e04c4f90fbb4cd45845
--- /dev/null
+++ b/src/main/java/com/slprojects/slcraftplugin/models/UserSetting.java
@@ -0,0 +1,38 @@
+package com.slprojects.slcraftplugin.models;
+
+import org.bjloquent.Model;
+
+public class UserSetting extends Model {
+    private String uuid;
+    private String name;
+    private String value;
+
+    public UserSetting() {
+        super.tableName = "site_userSetting";
+        super.primaryKeyName = "uuid";
+    }
+
+    public String getUuid() {
+        return uuid;
+    }
+
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+}
diff --git a/src/main/java/com/slprojects/slcraftplugin/utils/Database.java b/src/main/java/com/slprojects/slcraftplugin/utils/Database.java
index ef9f6db522885fcdd3e87ca1d107b4b4534c9b32..3844aff2d3cdff03a8940a2623b9383fc21b606b 100644
--- a/src/main/java/com/slprojects/slcraftplugin/utils/Database.java
+++ b/src/main/java/com/slprojects/slcraftplugin/utils/Database.java
@@ -1,20 +1,20 @@
 package com.slprojects.slcraftplugin.utils;
 
-import com.slprojects.slcraftplugin.Main;
-import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.plugin.Plugin;
-import org.mariadb.jdbc.MariaDbPoolDataSource;
+import com.slprojects.slcraftplugin.models.UserSetting;
+import com.slprojects.slcraftplugin.utils.database.Configuration;
+import org.bjloquent.Connector;
+import org.bjloquent.Model;
 
 import java.sql.Connection;
 import java.sql.PreparedStatement;
-import java.sql.ResultSet;
 import java.sql.SQLException;
-
-import static org.bukkit.Bukkit.getServer;
+import java.util.List;
 
 @SuppressWarnings("UnusedReturnValue")
 public class Database {
     static final private String userSettingsTabName = "site_userSetting";
+    static Connection connection = null;
+    static Connector jLoquentConnector = null;
 
     /**
      * Récupère une valeur dans la table site_userSetting
@@ -24,36 +24,18 @@ public class Database {
      * @return Valeur de la clé
      */
     public static String getUserSetting(String uuid, String key) {
-        Connection con;
-        try {
-            con = bddOpenConn();
-        } catch (SQLException e) {
-            ConsoleLog.danger("Impossible d'ouvrir la connexion à la bdd.");
-            throw new RuntimeException(e);
-        }
-        String returnValue = null;
-
-        try {
-            PreparedStatement query = con.prepareStatement("SELECT * FROM " + userSettingsTabName + " WHERE uuid = ? AND name = ?");
-            query.setString(1, uuid);
-            query.setString(2, key);
-            ResultSet result = query.executeQuery();
-
-            if (result.next()) {
-                returnValue = result.getString("value");
-            }
-        } catch (SQLException e) {
-            ConsoleLog.danger("Erreur lors de l'exécution de la requête sql." + e);
+        List<UserSetting> settings = Model.where(
+                UserSetting.class,
+                new String[]{"uuid", "name"},
+                new String[]{"=", "="},
+                new String[]{uuid, key}
+        );
+
+        if (settings.size() != 1) {
+            return null;
         }
 
-        // On ferme la bdd
-        try {
-            con.close();
-        } catch (SQLException e) {
-            ConsoleLog.danger("Impossible de fermer la connexion à la bdd.");
-            e.printStackTrace();
-        }
-        return returnValue;
+        return (settings.get(0)).getValue();
     }
 
     /**
@@ -139,37 +121,17 @@ public class Database {
      * @return Connection
      */
     public static Connection bddOpenConn() throws SQLException {
-        Plugin plugin = getServer().getPluginManager().getPlugin(Main.pluginName);
-        if (plugin == null) {
-            throw new IllegalStateException("Le plugin " + Main.pluginName + " n'a pas été trouvé.");
-        }
-
-        FileConfiguration config = plugin.getConfig();
-
-        String connectionString = "jdbc:mariadb://" + config.getString("database.host");
-        connectionString += "/" + config.getString("database.database");
-        connectionString += "?user=" + config.getString("database.user");
-        connectionString += "&password=" + config.getString("database.password");
-        connectionString += "&maxPoolSize=10";
-
-        MariaDbPoolDataSource dataSource = new MariaDbPoolDataSource(connectionString);
-
-        try (Connection conn = dataSource.getConnection()) {
-            if (!conn.isValid(1000)) {
-                throw new SQLException("Could not establish database connection.");
-            }
-        }
-
-        testDataSource(dataSource);
-
-        return dataSource.getConnection();
+        jLoquentConnector = Connector.getInstance();
+        jLoquentConnector.setDBConfig(new Configuration());
+        connection = jLoquentConnector.open();
+        return connection;
     }
 
-    private static void testDataSource(MariaDbPoolDataSource dataSource) throws SQLException {
-        try (Connection conn = dataSource.getConnection()) {
-            if (!conn.isValid(1000)) {
-                throw new SQLException("Erreur lors de la connexion à la base de données.");
-            }
-        }
+    /**
+     * Ferme la connexion à la base de données
+     */
+    public static void bddCloseConn() throws SQLException {
+        connection.close();
+        jLoquentConnector.close();
     }
 }
diff --git a/src/main/java/com/slprojects/slcraftplugin/utils/database/Configuration.java b/src/main/java/com/slprojects/slcraftplugin/utils/database/Configuration.java
new file mode 100644
index 0000000000000000000000000000000000000000..9c2fd6d436e742018d181e137929bc1adb059f5c
--- /dev/null
+++ b/src/main/java/com/slprojects/slcraftplugin/utils/database/Configuration.java
@@ -0,0 +1,52 @@
+package com.slprojects.slcraftplugin.utils.database;
+
+import com.slprojects.slcraftplugin.Main;
+import org.bjloquent.DBConfig;
+import org.bjloquent.DatabaseType;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.plugin.Plugin;
+
+import static org.bukkit.Bukkit.getServer;
+
+public class Configuration implements DBConfig {
+    FileConfiguration config = null;
+
+    public Configuration() {
+        Plugin plugin = getServer().getPluginManager().getPlugin(Main.pluginName);
+        if (plugin == null) {
+            throw new IllegalStateException("Le plugin " + Main.pluginName + " n'a pas été trouvé.");
+        }
+
+        config = plugin.getConfig();
+    }
+
+    @Override
+    public DatabaseType getDatabaseType() {
+        return DatabaseType.MARIADB;
+    }
+
+    @Override
+    public String getHostName() {
+        return config.getString("database.host");
+    }
+
+    @Override
+    public String getPortNumber() {
+        return config.getString("database.port");
+    }
+
+    @Override
+    public String getDatabaseName() {
+        return config.getString("database.database");
+    }
+
+    @Override
+    public String getUsername() {
+        return config.getString("database.user");
+    }
+
+    @Override
+    public String getPassword() {
+        return config.getString("database.password");
+    }
+}