Skip to content
Snippets Groups Projects
Commit 6d25f173 authored by Laurine's avatar Laurine
Browse files

9- Hibernate

parent 804a669e
No related branches found
No related tags found
No related merge requests found
SELECT setval(pg_get_serial_sequence('users', 'id'), coalesce(max(id)+1, 1), false) FROM users;
......@@ -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>
......
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);
......
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;
}
}
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);
}
}
}
......@@ -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();
}
}
spring.datasource.url=jdbc:postgresql://localhost/db-name
spring.datasource.username=user
spring.datasource.password=pwd
spring.datasource.driver-class-name=org.postgresql.Driver
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment