diff --git a/initdb/3_INCREASE_IDS.sql b/initdb/3_INCREASE_IDS.sql
new file mode 100644
index 0000000000000000000000000000000000000000..2e8fced86f5493562b3841dfcb46258e8472ef11
--- /dev/null
+++ b/initdb/3_INCREASE_IDS.sql
@@ -0,0 +1 @@
+SELECT setval(pg_get_serial_sequence('users', 'id'), coalesce(max(id)+1, 1), false) FROM users;
diff --git a/pom.xml b/pom.xml
index 878037cce8f7116e18e1b930f4ee78b1715bc96d..042c9c5f8c1abab0f1980df29542fc69ffe53cbb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,6 +42,12 @@
 		    <artifactId>postgresql</artifactId>
 		    <version>42.6.0</version>
 		</dependency>
+		<!-- https://mvnrepository.com/artifact/org.hibernate.orm/hibernate-core -->
+		<dependency>
+		    <groupId>org.hibernate.orm</groupId>
+		    <artifactId>hibernate-core</artifactId>
+		    <version>6.3.1.Final</version>
+		</dependency>
 
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
diff --git a/src/main/java/com/example/livecodingjavaspring/App.java b/src/main/java/com/example/livecodingjavaspring/App.java
index 7969c29397c0cf4fe4d4c4b6315c374a502b4d21..f0ac0f4037bf67c85e014ae87e4db6f8cfc8aa81 100644
--- a/src/main/java/com/example/livecodingjavaspring/App.java
+++ b/src/main/java/com/example/livecodingjavaspring/App.java
@@ -1,10 +1,9 @@
 package com.example.livecodingjavaspring;
 
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
-@SpringBootApplication(exclude={ DataSourceAutoConfiguration.class })
+@SpringBootApplication()
 public class App {
     public static void main(String[] args) {
         new SpringApplicationBuilder(App.class).run(args);
diff --git a/src/main/java/com/example/livecodingjavaspring/User.java b/src/main/java/com/example/livecodingjavaspring/User.java
index cc9fa8b0a57f391389d089d41a8ff83cb97829f3..11f811366d028be77288bb0634bf5612cefe8b6e 100644
--- a/src/main/java/com/example/livecodingjavaspring/User.java
+++ b/src/main/java/com/example/livecodingjavaspring/User.java
@@ -1,21 +1,22 @@
 package com.example.livecodingjavaspring;
 
+import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
-import java.util.Random;
-
+@Entity
+@Table(name = "users")
 @Data
 @Builder
+@AllArgsConstructor
+@NoArgsConstructor
 public class User {
-    private final int id = new Random().nextInt(1000);
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Integer id;
     private String firstName;
     private String lastName;
     private Integer age;
-
-    public User(String firstName, String lastName, Integer age) {
-        this.firstName = firstName;
-        this.lastName = lastName;
-        this.age = age;
-    }
 }
diff --git a/src/main/java/com/example/livecodingjavaspring/UserDao.java b/src/main/java/com/example/livecodingjavaspring/UserDao.java
index 8c085e71e6f921af03bbc4543bf3991d1a6b8da6..39a63d36c7a25b09f32036f5094de5573106c97d 100644
--- a/src/main/java/com/example/livecodingjavaspring/UserDao.java
+++ b/src/main/java/com/example/livecodingjavaspring/UserDao.java
@@ -1,48 +1,10 @@
 package com.example.livecodingjavaspring;
 
-import org.springframework.stereotype.Service;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
 
-import java.sql.*;
-import java.util.ArrayList;
-import java.util.List;
+@Repository
+public interface UserDao extends CrudRepository<User, Integer> {
 
-@Service
-public class UserDao {
-    private static final String FETCH_ALL_USERS_QUERY = "SELECT * FROM users";
-    private static final String ADD_USER_QUERY = "INSERT INTO users (id, first_name, last_name, age) VALUES (?, ?, ?, ?)";
 
-
-    public List<User> getUsers() {
-        List<User> users = new ArrayList<>();
-        try (Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost/db-name", "user", "pwd");
-             PreparedStatement preparedStatement = connection.prepareStatement(FETCH_ALL_USERS_QUERY)) {
-            ResultSet resultSet = preparedStatement.executeQuery();
-            while (resultSet.next()) {
-                User user = User.builder()
-                        .firstName(resultSet.getString("first_name"))
-                        .lastName(resultSet.getString("last_name"))
-                        .age(resultSet.getInt("age"))
-                        .build();
-                users.add(user);
-            }
-        } catch (SQLException e) {
-            throw new RuntimeException(e);
-        }
-        return users;
-
-    }
-
-    public int addUser(User user) {
-        try (Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost/db-name", "user", "pwd");
-             PreparedStatement preparedStatement = connection.prepareStatement(ADD_USER_QUERY)) {
-            preparedStatement.setInt(1, user.getId());
-            preparedStatement.setString(2, user.getFirstName());
-            preparedStatement.setString(3, user.getLastName());
-            preparedStatement.setInt(4, user.getAge());
-            return preparedStatement.executeUpdate();
-        } catch (SQLException e) {
-            throw new RuntimeException(e);
-        }
-
-    }
 }
diff --git a/src/main/java/com/example/livecodingjavaspring/UserLibraryController.java b/src/main/java/com/example/livecodingjavaspring/UserLibraryController.java
index e528c9f7958360173e5aca551751cb5e9cdf92ca..6688b4cf1c201953433226992b66028c1875d34a 100644
--- a/src/main/java/com/example/livecodingjavaspring/UserLibraryController.java
+++ b/src/main/java/com/example/livecodingjavaspring/UserLibraryController.java
@@ -3,6 +3,7 @@ package com.example.livecodingjavaspring;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @RestController
@@ -17,13 +18,16 @@ public class UserLibraryController {
 
     @GetMapping("")
     public List<User> getUsers() {
-        return userDao.getUsers();
+        Iterable<User> it = userDao.findAll();
+        List <User> users = new ArrayList<>();
+        it.forEach(users::add);
+        return users;
     }
 
     @PostMapping("")
     public List<User> addUser(@RequestBody User user) {
-        userDao.addUser(user);
-        return userDao.getUsers();
+        userDao.save(user);
+        return getUsers();
     }
 
 }
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 8b137891791fe96927ad78e64b0aad7bded08bdc..211a08b2d93005b1a1a8bfa4298d6fe993206c34 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1 +1,5 @@
+spring.datasource.url=jdbc:postgresql://localhost/db-name
+spring.datasource.username=user
+spring.datasource.password=pwd
+spring.datasource.driver-class-name=org.postgresql.Driver