Add HibernateConfig class for database configuration and refactor App to use BigDecimal for Ad prices
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.humanbooster;
|
||||
|
||||
import com.humanbooster.config.HibernateConfig;
|
||||
import com.humanbooster.dao.AdDao;
|
||||
import com.humanbooster.dao.ArticleDao;
|
||||
import com.humanbooster.dao.UserDao;
|
||||
@@ -15,6 +16,7 @@ import org.hibernate.boot.MetadataSources;
|
||||
import org.hibernate.boot.registry.StandardServiceRegistry;
|
||||
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDate;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
@@ -24,13 +26,18 @@ public class App {
|
||||
public static void main(String[] args) {
|
||||
System.out.println("Démarrage de l'application");
|
||||
|
||||
StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
|
||||
.configure()
|
||||
.build();
|
||||
SessionFactory sessionFactory;
|
||||
|
||||
Metadata metadata = new MetadataSources(registry).buildMetadata();
|
||||
SessionFactory sessionFactory = metadata.buildSessionFactory();
|
||||
System.out.println("Connexion réussie !");
|
||||
if (HibernateConfig.LOCAL) sessionFactory = HibernateConfig.getSessionFactory();
|
||||
|
||||
else {
|
||||
StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
|
||||
.configure()
|
||||
.build();
|
||||
|
||||
Metadata metadata = new MetadataSources(registry).buildMetadata();
|
||||
sessionFactory = metadata.buildSessionFactory();
|
||||
}
|
||||
|
||||
User user = new User("Bob", "bob@example.com", null);
|
||||
|
||||
@@ -39,7 +46,23 @@ public class App {
|
||||
new Article("Article 2", "Contenu de l'article 2", LocalDate.now(), user, 0)
|
||||
));
|
||||
|
||||
Ad ad = new Ad("Ad 1", "Contenu de l'annonce 1", LocalDate.now(), LocalDate.now().plusDays(7), "contact@example.com", 12);
|
||||
List<Ad> ads = List.of(
|
||||
(new Ad(
|
||||
"Ad 1",
|
||||
"Contenu de l'annonce 1",
|
||||
LocalDate.now(),
|
||||
LocalDate.now().plusDays(7),
|
||||
"contact@example.com",
|
||||
BigDecimal.valueOf(12))),
|
||||
(new Ad(
|
||||
"Ad 2",
|
||||
"Contenu de l'annonce 2",
|
||||
LocalDate.now(),
|
||||
LocalDate.now().plusDays(10),
|
||||
"contact@example.com",
|
||||
BigDecimal.valueOf(6.7)))
|
||||
|
||||
);
|
||||
|
||||
UserService userService = new UserService(new UserDao(sessionFactory));
|
||||
ArticleService articleService = new ArticleService(new ArticleDao(sessionFactory));
|
||||
@@ -54,7 +77,7 @@ public class App {
|
||||
}
|
||||
);
|
||||
|
||||
adService.createAd(ad);
|
||||
ads.forEach(adService::createAd);
|
||||
|
||||
sessionFactory.close();
|
||||
System.out.print("Fin du programme");
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.humanbooster.config;
|
||||
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.hibernate.cfg.Configuration;
|
||||
import org.reflections.Reflections;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
|
||||
public class HibernateConfig {
|
||||
private static final SessionFactory sessionFactory;
|
||||
public static final boolean LOCAL = true;
|
||||
private static String url;
|
||||
private static String username;
|
||||
private static String password;
|
||||
|
||||
|
||||
static {
|
||||
|
||||
if (LOCAL) {
|
||||
url = "jdbc:mysql://127.0.0.1:3306/testdb";
|
||||
username = "admin";
|
||||
password = "admin";
|
||||
} else {
|
||||
url = "jdbc:mysql://mysql:3306/testdb?useSSL=false&allowPublicKeyRetrieval=true";
|
||||
username = "root";
|
||||
password = "root";
|
||||
}
|
||||
|
||||
Configuration config = new Configuration()
|
||||
.setProperty("hibernate.connection.url", url)
|
||||
.setProperty("hibernate.connection.username", username)
|
||||
.setProperty("hibernate.connection.password", password)
|
||||
.setProperty("hibernate.connection.driver_class", "com.mysql.cj.jdbc.Driver")
|
||||
.setProperty("hibernate.hbm2ddl.auto", "update")
|
||||
.setProperty("hibernate.show_sql", "false")
|
||||
.setProperty("hibernate.format_sql", "true");
|
||||
|
||||
Reflections reflections = new Reflections("com.humanbooster.model");
|
||||
for (Class<?> clazz : reflections.getTypesAnnotatedWith(Entity.class)) {
|
||||
config.addAnnotatedClass(clazz);
|
||||
}
|
||||
|
||||
sessionFactory = config.buildSessionFactory();
|
||||
}
|
||||
|
||||
public static SessionFactory getSessionFactory() {
|
||||
return sessionFactory;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
|
||||
<property name="hibernate.hbm2ddl.auto">update</property>
|
||||
|
||||
|
||||
<property name="hibernate.show_sql">false</property>
|
||||
<property name="hibernate.format_sql">true</property>
|
||||
|
||||
<mapping class="com.humanbooster.model.User"/>
|
||||
<mapping class="com.humanbooster.model.Article"/>
|
||||
<mapping class="com.humanbooster.model.Ad"/>
|
||||
|
||||
Reference in New Issue
Block a user