diff --git a/pom.xml b/pom.xml
index 49bebd6a..9285a528 100644
--- a/pom.xml
+++ b/pom.xml
@@ -109,6 +109,28 @@
 			<artifactId>thymeleaf-spring5</artifactId>
 			<version>3.0.15.RELEASE</version>
 		</dependency>
+
+		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
+		<dependency>
+			<groupId>mysql</groupId>
+			<artifactId>mysql-connector-java</artifactId>
+			<version>8.0.30</version>
+		</dependency>
+
+		<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core-jakarta -->
+		<dependency>
+			<groupId>org.hibernate</groupId>
+			<artifactId>hibernate-core-jakarta</artifactId>
+			<version>5.6.11.Final</version>
+		</dependency>
+
+		<!-- https://mvnrepository.com/artifact/p6spy/p6spy -->
+		<dependency>
+			<groupId>p6spy</groupId>
+			<artifactId>p6spy</artifactId>
+			<version>3.9.1</version>
+		</dependency>
+
 	</dependencies>
 
 	<build>
diff --git a/src/main/java/com/game/entity/Player.java b/src/main/java/com/game/entity/Player.java
index a6cb7bca..ff671a26 100644
--- a/src/main/java/com/game/entity/Player.java
+++ b/src/main/java/com/game/entity/Player.java
@@ -1,23 +1,38 @@
 package com.game.entity;
 
-import java.util.Date;
+import jakarta.persistence.*;
 
+import java.util.Date;
 
+@NamedQuery(name = "PLAYERS_GET_ALL_COUNT", query = "select count (p) from Player p")
+@Entity
+@Table(name = "player", schema = "rpg")
 public class Player {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
 
+    @Column(name="name", unique = true, length=12, nullable = false)
     private String name;
 
+    @Column(name = "title", nullable = false, length = 30)
     private String title;
 
+    @Column(name = "race", nullable = false)
+    @Enumerated(EnumType.ORDINAL)
     private Race race;
 
+    @Column(name = "profession", nullable = false)
+    @Enumerated(EnumType.ORDINAL)
     private Profession profession;
 
+    @Column(name = "birthday", nullable = false)
     private Date birthday;
 
+    @Column(name = "banned", nullable = false)
     private Boolean banned;
 
+    @Column(name = "level", nullable = false)
     private Integer level;
 
     public Player() {
diff --git a/src/main/java/com/game/repository/PlayerRepositoryDB.java b/src/main/java/com/game/repository/PlayerRepositoryDB.java
index 4f80ac70..aec0dc64 100644
--- a/src/main/java/com/game/repository/PlayerRepositoryDB.java
+++ b/src/main/java/com/game/repository/PlayerRepositoryDB.java
@@ -1,51 +1,96 @@
 package com.game.repository;
 
 import com.game.entity.Player;
+import jakarta.persistence.NamedQuery;
+import org.hibernate.Hibernate;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.cfg.Environment;
+import org.hibernate.query.NativeQuery;
+import org.hibernate.query.Query;
 import org.springframework.stereotype.Repository;
 
 import javax.annotation.PreDestroy;
 import java.util.List;
 import java.util.Optional;
+import java.util.Properties;
 
 @Repository(value = "db")
 public class PlayerRepositoryDB implements IPlayerRepository {
 
-    public PlayerRepositoryDB() {
+    private final SessionFactory sessionFactory;
 
+    public PlayerRepositoryDB() {
+        Properties properties = new Properties();
+        properties.put(Environment.DIALECT, "org.hibernate.dialect.MySQL8Dialect");
+        properties.put(Environment.DRIVER, "com.mysql.cj.jdbc.Driver");
+        properties.put(Environment.URL, "jdbc:mysql://localhost:3306/rpg");
+        properties.put(Environment.HBM2DDL_AUTO, "update");
+        properties.put(Environment.USER, "root");
+        properties.put(Environment.PASS, "root");
+        sessionFactory = new Configuration()
+                .addAnnotatedClass(Player.class)
+                .addProperties(properties)
+                .buildSessionFactory();
     }
 
     @Override
     public List<Player> getAll(int pageNumber, int pageSize) {
-        return null;
+        try (Session session = sessionFactory.openSession()) {
+            NativeQuery<Player> query = session.createNativeQuery("select * from rpg.player", Player.class);
+            query.setFirstResult(pageNumber * pageSize);
+            query.setMaxResults(pageSize);
+            return query.list();
+        }
     }
 
     @Override
     public int getAllCount() {
-        return 0;
+        try (Session session = sessionFactory.openSession()) {
+            Query<Long> query = session.createNamedQuery("PLAYERS_GET_ALL_COUNT", Long.class);
+            return Math.toIntExact(query.getSingleResult());
+        }
     }
 
     @Override
     public Player save(Player player) {
-        return null;
+        try (Session session = sessionFactory.openSession()) {
+            session.beginTransaction();
+            session.save(player);
+            session.getTransaction().commit();
+            return player;
+        }
     }
 
     @Override
     public Player update(Player player) {
-        return null;
+        try (Session session = sessionFactory.openSession()) {
+            session.beginTransaction();
+            session.update(player);
+            session.getTransaction().commit();
+            return player;
+        }
     }
 
     @Override
     public Optional<Player> findById(long id) {
-        return Optional.empty();
+        try (Session session = sessionFactory.openSession()) {
+            return Optional.ofNullable(session.get(Player.class, id));
+        }
     }
 
     @Override
     public void delete(Player player) {
-
+        try (Session session = sessionFactory.openSession()) {
+            session.beginTransaction();
+            session.delete(player);
+            session.getTransaction().commit();
+        }
     }
 
     @PreDestroy
     public void beforeStop() {
-
+        sessionFactory.close();
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/resources/spy.properties b/src/main/resources/spy.properties
new file mode 100644
index 00000000..dfff2036
--- /dev/null
+++ b/src/main/resources/spy.properties
@@ -0,0 +1,4 @@
+driverlist=com.mysql.cj.jdbc.Driver
+dateformat=yyyy-MM-dd hh:mm:ss a
+appender=com.p6spy.engine.spy.appender.StdoutLogger
+logMessageFormat=com.p6spy.engine.spy.appender.MultiLineFormat
\ No newline at end of file