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

View File

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

View File

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

View File

@@ -1,5 +1,6 @@
package com.humanbooster.controller; package com.humanbooster.controller;
import com.humanbooster.config.HibernateConfig;
import com.humanbooster.dao.GenericDao; import com.humanbooster.dao.GenericDao;
import jakarta.ws.rs.*; import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.MediaType;
@@ -9,7 +10,7 @@ import java.util.List;
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
public abstract class GenericControllerImpl<T, ID> implements GenericController<T, ID>, GenericDao<T, ID> { public abstract class GenericControllerImpl<T, ID> implements GenericController<T, ID>, GenericDao<T, ID> {
protected final SessionFactory sessionFactory; protected final SessionFactory sessionFactory;
private final GenericDao<T, ID> dao; private final GenericDao<T, ID> dao;

View File

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