diff --git a/pom.xml b/pom.xml
index 9b8762b..f5cdd91 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,6 +24,18 @@
spring-boot-starter-web
3.3.2
+
+
+ org.hibernate
+ hibernate-core
+ 5.6.15.Final
+
+
+
+ org.postgresql
+ postgresql
+ 42.7.3
+
diff --git a/src/main/java/wtf/beatrice/releasehive/AccountController.java b/src/main/java/wtf/beatrice/releasehive/AccountController.java
new file mode 100644
index 0000000..f1480c0
--- /dev/null
+++ b/src/main/java/wtf/beatrice/releasehive/AccountController.java
@@ -0,0 +1,27 @@
+package wtf.beatrice.releasehive;
+
+import org.springframework.web.bind.annotation.*;
+
+import java.util.UUID;
+
+@RestController
+public class AccountController {
+
+ private final AccountService accountService = new AccountService();
+
+
+ @PostMapping("/register")
+ public String register(
+ @RequestParam(name = "username") String username,
+ @RequestParam(name="password") String password)
+ {
+
+ UUID id = UUID.randomUUID();
+ User user = new User();
+ user.setUsername(username);
+ user.setPassword(password);
+ user.setUuid(id);
+ accountService.registerUser(user);
+ return "user registered, " + username + ", " + password + ", " + id.toString();
+ }
+}
diff --git a/src/main/java/wtf/beatrice/releasehive/AccountService.java b/src/main/java/wtf/beatrice/releasehive/AccountService.java
new file mode 100644
index 0000000..452fc1e
--- /dev/null
+++ b/src/main/java/wtf/beatrice/releasehive/AccountService.java
@@ -0,0 +1,15 @@
+package wtf.beatrice.releasehive;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+
+public class AccountService
+{
+
+ public void registerUser(User user) {
+ Session session = HibernateManager.getSession();
+ Transaction tx = session.beginTransaction();
+ session.save(user);
+ tx.commit();
+ }
+}
diff --git a/src/main/java/wtf/beatrice/releasehive/HibernateManager.java b/src/main/java/wtf/beatrice/releasehive/HibernateManager.java
new file mode 100644
index 0000000..615f802
--- /dev/null
+++ b/src/main/java/wtf/beatrice/releasehive/HibernateManager.java
@@ -0,0 +1,44 @@
+package wtf.beatrice.releasehive;
+
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.hibernate.cfg.Configuration;
+
+public class HibernateManager
+{
+ private static HibernateManager instance;
+ private static Session session;
+ private static SessionFactory sessionFactory;
+
+
+ private HibernateManager() {
+ }
+
+ public static void initialize() {
+ sessionFactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
+ }
+
+ public static void shutdown() {
+ if(session != null && !session.isOpen()) {
+ session.close();
+ }
+ if(sessionFactory != null && sessionFactory.isOpen()) {
+ session.close();
+ }
+ }
+
+
+ public static Session getSession() {
+ if(session != null && (!session.isOpen() || !session.isConnected())) {
+ session.close();
+ }
+
+ session = sessionFactory.openSession();
+ return session;
+ }
+
+ public static Transaction beginTransaction() {
+ return getSession().beginTransaction();
+ }
+}
diff --git a/src/main/java/wtf/beatrice/releasehive/Main.java b/src/main/java/wtf/beatrice/releasehive/Main.java
index 9fb3712..faa9519 100644
--- a/src/main/java/wtf/beatrice/releasehive/Main.java
+++ b/src/main/java/wtf/beatrice/releasehive/Main.java
@@ -2,9 +2,14 @@ package wtf.beatrice.releasehive;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import java.util.List;
+import java.util.UUID;
+
@SpringBootApplication
public class Main {
@@ -12,9 +17,26 @@ public class Main {
public static void main(String[] args) {
LOGGER.info("Hello world!");
+ Runtime.getRuntime().addShutdownHook(shutdownHook);
LOGGER.info("Initializing Spring Boot");
SpringApplication.run(Main.class, args);
LOGGER.info("Spring Boot initialized!");
+
+ HibernateManager.initialize();
+
+ Session session = HibernateManager.getSession();
+ Transaction transaction = session.beginTransaction();
+ List users = session.createQuery("FROM User", User.class).getResultList();
+ for (User user : users) {
+ LOGGER.info("ID: {}, Name: {}", user.getUuid(), user.getUsername());
+ }
+ transaction.commit();
+
}
+
+ private static final Thread shutdownHook = new Thread(() -> {
+ HibernateManager.shutdown();
+ LOGGER.info("Shutting down!");
+ });
}
diff --git a/src/main/java/wtf/beatrice/releasehive/TryController.java b/src/main/java/wtf/beatrice/releasehive/TryController.java
deleted file mode 100644
index 124e179..0000000
--- a/src/main/java/wtf/beatrice/releasehive/TryController.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package wtf.beatrice.releasehive;
-
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-public class TryController {
-
- @GetMapping("/try")
- public String tryMethod() {
- return "Hello World!";
- }
-}
diff --git a/src/main/java/wtf/beatrice/releasehive/User.java b/src/main/java/wtf/beatrice/releasehive/User.java
new file mode 100644
index 0000000..19596ea
--- /dev/null
+++ b/src/main/java/wtf/beatrice/releasehive/User.java
@@ -0,0 +1,48 @@
+package wtf.beatrice.releasehive;
+
+
+import javax.persistence.*;
+import java.util.UUID;
+
+@Entity
+@Table(name="users")
+public class User
+{
+
+ @Id
+ @Column
+ private UUID uuid;
+
+ @Column
+ private String username;
+
+
+ @Column
+ private String password;
+
+ public UUID getUuid() {
+ return uuid;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public void setUuid(UUID uuid) {
+ this.uuid = uuid;
+
+
+ }
+}
diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml
new file mode 100644
index 0000000..ce94647
--- /dev/null
+++ b/src/main/resources/hibernate.cfg.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+ org.postgresql.Driver
+ jdbc:postgresql://localhost:5432/releasehive
+ relhive
+ development
+
+
+ org.hibernate.dialect.PostgreSQLDialect
+
+
+ true
+
+
+ update
+
+
+
+
+
+