Refactor Hibernate configuration to use a static local environment variable and simplify controller instantiation

This commit is contained in:
Vincent Guillet
2025-05-23 16:39:02 +02:00
parent 180e1e1622
commit 58a10fd4b8
5 changed files with 17 additions and 13 deletions

View File

@@ -18,7 +18,11 @@ import org.hibernate.SessionFactory;
import java.util.List;
public class App {
public static final boolean LOCAL_ENVIRONMENT = true;
public static void main(String[] args) {
System.out.println("Démarrage de l'application");
RestClient client = new RestClient();
@@ -30,7 +34,7 @@ public class App {
System.out.println("Erreur lors du démarrage du serveur : " + e.getMessage());
}
SessionFactory sessionFactory = new HibernateConfig(true).getSessionFactory();
SessionFactory sessionFactory = new HibernateConfig().getSessionFactory();
UserService userService = new UserService(new UserDao(sessionFactory));
ArticleService articleService = new ArticleService(new ArticleDao(sessionFactory));

View File

@@ -1,5 +1,6 @@
package com.humanbooster.config;
import com.humanbooster.App;
import org.hibernate.SessionFactory;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
@@ -12,17 +13,11 @@ import jakarta.persistence.Entity;
public class HibernateConfig {
private final boolean isLocalEnvironment;
public HibernateConfig(boolean isLocalEnvironment) {
this.isLocalEnvironment = isLocalEnvironment;
}
public SessionFactory getSessionFactory() {
SessionFactory sessionFactory;
if (isLocalEnvironment) {
if (App.LOCAL_ENVIRONMENT) {
Configuration config = new Configuration()
.setProperty("hibernate.connection.url", "jdbc:mysql://127.0.0.1:3306/testdb")

View File

@@ -1,5 +1,7 @@
package com.humanbooster.controller;
import com.humanbooster.config.HibernateConfig;
import com.humanbooster.dao.ArticleDao;
import com.humanbooster.dao.GenericDao;
import com.humanbooster.model.Article;
import jakarta.ws.rs.Path;
@@ -8,7 +10,11 @@ import org.hibernate.SessionFactory;
@Path("/articles")
public class ArticleController extends GenericControllerImpl<Article, Long> {
public ArticleController() {
this(new HibernateConfig().getSessionFactory(), new ArticleDao(new HibernateConfig().getSessionFactory()));
}
public ArticleController(SessionFactory sessionFactory, GenericDao<Article, Long> dao) {
super(sessionFactory,dao);
super(sessionFactory, dao);
}
}

View File

@@ -1,5 +1,6 @@
package com.humanbooster.controller;
import com.humanbooster.config.HibernateConfig;
import com.humanbooster.dao.GenericDao;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;

View File

@@ -1,10 +1,8 @@
package com.humanbooster.controller;
import com.humanbooster.config.HibernateConfig;
import com.humanbooster.dao.GenericDao;
import com.humanbooster.dao.UserDao;
import com.humanbooster.model.User;
import jakarta.inject.Inject;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;
import org.hibernate.SessionFactory;
@@ -16,7 +14,7 @@ import org.hibernate.SessionFactory;
public class UserController extends GenericControllerImpl<User, Long> {
public UserController() {
this(HibernateConfig.getSessionFactory(), new UserDao(HibernateConfig.getSessionFactory()));
this(new HibernateConfig().getSessionFactory(), new UserDao(new HibernateConfig().getSessionFactory()));
}
public UserController(SessionFactory sessionFactory, UserDao userDao) {