diff --git a/src/main/java/DAO/GenericDAOImpl.java b/src/main/java/DAO/AbstractJpaDao.java similarity index 86% rename from src/main/java/DAO/GenericDAOImpl.java rename to src/main/java/DAO/AbstractJpaDao.java index 20a4776..16e95ff 100644 --- a/src/main/java/DAO/GenericDAOImpl.java +++ b/src/main/java/DAO/AbstractJpaDao.java @@ -2,17 +2,16 @@ package DAO; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityTransaction; -import jakarta.persistence.PersistenceException; import jpa.EntityManagerHelper; import java.io.Serializable; import java.util.List; -public abstract class GenericDAOImpl implements Generic { +public abstract class AbstractJpaDao implements IGenericDao { protected EntityManager em; private Class entityClass; - public GenericDAOImpl() { + public AbstractJpaDao() { this.em = EntityManagerHelper.getEntityManager(); } @@ -21,6 +20,10 @@ public abstract class GenericDAOImpl implements Gener this.entityClass= class2; } + public T findOne(K id) { + return em.find(entityClass, id); + } + public List findAll() { return em.createQuery("select e from " + entityClass.getName() + " as e", entityClass).getResultList(); } diff --git a/src/main/java/DAO/EntityManagerHelper.java b/src/main/java/DAO/EntityManagerHelper.java new file mode 100644 index 0000000..a8ddb39 --- /dev/null +++ b/src/main/java/DAO/EntityManagerHelper.java @@ -0,0 +1,50 @@ +package DAO; + +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.Persistence; + +public class EntityManagerHelper { + + private static final EntityManagerFactory emf; + private static final ThreadLocal threadLocal; + + static { + emf = Persistence.createEntityManagerFactory("dev"); + threadLocal = new ThreadLocal(); + } + + public static EntityManager getEntityManager() { + EntityManager em = threadLocal.get(); + + if (em == null) { + em = emf.createEntityManager(); + threadLocal.set(em); + } + return em; + } + + public static void closeEntityManager() { + EntityManager em = threadLocal.get(); + if (em != null) { + em.close(); + threadLocal.set(null); + } + } + + public static void closeEntityManagerFactory() { + emf.close(); + } + + public static void beginTransaction() { + getEntityManager().getTransaction().begin(); + } + + public static void rollback() { + getEntityManager().getTransaction().rollback(); + } + + public static void commit() { + getEntityManager().getTransaction().commit(); + } +} \ No newline at end of file diff --git a/src/main/java/DAO/Generic.java b/src/main/java/DAO/IGenericDao.java similarity index 74% rename from src/main/java/DAO/Generic.java rename to src/main/java/DAO/IGenericDao.java index 6ba7bb0..1be0f03 100644 --- a/src/main/java/DAO/Generic.java +++ b/src/main/java/DAO/IGenericDao.java @@ -3,11 +3,12 @@ package DAO; import java.io.Serializable; import java.util.List; -public interface Generic { +public interface IGenericDao { void create(final T entity); T findById(final K id); T update(final T entity); void delete(final T entity); void deleteById(final K id); List findAll(); + T findOne(final K id); } diff --git a/src/main/java/DAO/QuestionDAO.java b/src/main/java/DAO/QuestionDAO.java index 73195ec..84b5d92 100644 --- a/src/main/java/DAO/QuestionDAO.java +++ b/src/main/java/DAO/QuestionDAO.java @@ -2,7 +2,7 @@ package DAO; import metier.Question; -public class QuestionDAO extends GenericDAOImpl { +public class QuestionDAO extends AbstractJpaDao { public QuestionDAO(){ super(); this.setClass(Question.class); diff --git a/src/main/java/DAO/QuizzDAO.java b/src/main/java/DAO/QuizzDAO.java index 779586d..d852696 100644 --- a/src/main/java/DAO/QuizzDAO.java +++ b/src/main/java/DAO/QuizzDAO.java @@ -3,7 +3,7 @@ package DAO; import jakarta.persistence.EntityTransaction; import metier.Quizz; -public class QuizzDAO extends GenericDAOImpl{ +public class QuizzDAO extends AbstractJpaDao { public QuizzDAO(){ super(); this.setClass(Quizz.class); diff --git a/src/main/java/DAO/ReponseDAO.java b/src/main/java/DAO/ReponseDAO.java index 60fa044..731c264 100644 --- a/src/main/java/DAO/ReponseDAO.java +++ b/src/main/java/DAO/ReponseDAO.java @@ -1,12 +1,8 @@ package DAO; -import java.util.List; - -import jakarta.persistence.EntityTransaction; -import jakarta.persistence.Query; import metier.Reponse; -public class ReponseDAO extends GenericDAOImpl { +public class ReponseDAO extends AbstractJpaDao { public ReponseDAO(){ super(); this.setClass(Reponse.class); diff --git a/src/main/java/DAO/SessionDAO.java b/src/main/java/DAO/SessionDAO.java index ce5f89b..ab56567 100644 --- a/src/main/java/DAO/SessionDAO.java +++ b/src/main/java/DAO/SessionDAO.java @@ -4,11 +4,10 @@ package DAO; import jakarta.persistence.EntityTransaction; import jakarta.persistence.Query; import metier.Session; -import metier.Utilisateur; import java.util.List; -public class SessionDAO extends GenericDAOImpl { +public class SessionDAO extends AbstractJpaDao { public SessionDAO() { super(); this.setClass(Session.class); diff --git a/src/main/java/DAO/UtilisateurDAO.java b/src/main/java/DAO/UtilisateurDAO.java index b8c8cba..59e616f 100644 --- a/src/main/java/DAO/UtilisateurDAO.java +++ b/src/main/java/DAO/UtilisateurDAO.java @@ -5,9 +5,7 @@ import jakarta.persistence.Query; import metier.Session; import metier.Utilisateur; -import java.util.ArrayList; - -public class UtilisateurDAO extends GenericDAOImpl{ +public class UtilisateurDAO extends AbstractJpaDao { public UtilisateurDAO() { super(); this.setClass(Utilisateur.class); diff --git a/src/main/java/Mapper/UtilisateurMapper.java b/src/main/java/Mapper/UtilisateurMapper.java index bc76185..de0169f 100644 --- a/src/main/java/Mapper/UtilisateurMapper.java +++ b/src/main/java/Mapper/UtilisateurMapper.java @@ -13,7 +13,4 @@ public interface UtilisateurMapper { UtilisateurDTO toDTO(Utilisateur utilisateur); Utilisateur toEntity(UtilisateurDTO dto); - - List toDTOs(List utilisateurs); - List toEntitys(List dtos); } diff --git a/src/main/java/jpa/JpaTest.java b/src/main/java/jpa/JpaTest.java index dade410..172b4c4 100644 --- a/src/main/java/jpa/JpaTest.java +++ b/src/main/java/jpa/JpaTest.java @@ -11,36 +11,37 @@ import java.util.List; public class JpaTest { - private EntityManager manager; + private EntityManager manager; - public JpaTest(EntityManager manager) { - this.manager = manager; - } - /** - * @param args - */ - public static void main(String[] args) { + public JpaTest(EntityManager manager) { + this.manager = manager; + } + + /** + * @param args + */ + public static void main(String[] args) { EntityManager manager = EntityManagerHelper.getEntityManager(); - JpaTest test = new JpaTest(manager); + JpaTest test = new JpaTest(manager); - EntityTransaction tx = manager.getTransaction(); - tx.begin(); - try { + EntityTransaction tx = manager.getTransaction(); + tx.begin(); + try { //test.create_user_test(); - //test.create_session_test(); + //test.create_session_test(); //test.list_utilisateur(); - //test.list_session(); - } catch (Exception e) { - e.printStackTrace(); - } - tx.commit(); + //test.list_session(); + } catch (Exception e) { + e.printStackTrace(); + } + tx.commit(); - - manager.close(); - EntityManagerHelper.closeEntityManagerFactory(); - System.out.println(".. done"); - } + + manager.close(); + EntityManagerHelper.closeEntityManagerFactory(); + System.out.println(".. done"); + } private void create_user_test() { int numUser = manager.createQuery("SELECT u FROM Utilisateur u", Utilisateur.class).getResultList().size(); @@ -56,42 +57,41 @@ public class JpaTest { manager.persist(utilisateur1); manager.persist(utilisateur2); - } + } } - private void create_session_test() { + private void create_session_test() { int numUser = manager.createQuery("SELECT u FROM Session u", Session.class).getResultList().size(); if (numUser == 0) { //Utilisateur - Session session1 = new Session(); - session1.setCodePIN(1703); - session1.setTheme("Inphormatik"); - session1.setQuizzs(new ArrayList<>()); + Session session1 = new Session(); + session1.setCodePIN(1703); + session1.setTheme("Inphormatik"); + session1.setQuizzs(new ArrayList<>()); - List ulist = manager.createQuery("select user from Utilisateur user").getResultList(); - session1.setUtilisateurs(ulist); + List ulist = manager.createQuery("select user from Utilisateur user").getResultList(); + session1.setUtilisateurs(ulist); - manager.persist(session1); + manager.persist(session1); } } - private void list_utilisateur(){ - List result_utilisatuer_list= manager.createQuery("select u from Utilisateur u", Utilisateur.class).getResultList(); + private void list_utilisateur() { + List result_utilisatuer_list = manager.createQuery("select u from Utilisateur u", Utilisateur.class).getResultList(); for (Utilisateur u : result_utilisatuer_list) { - System.out.println(u.getId() + " " + u.getName() +" "+ u.getEmail()); + System.out.println(u.getId() + " " + u.getName() + " " + u.getEmail()); } } - private void list_session(){ - List result_session_list= manager.createQuery("select s from Session s", Session.class).getResultList(); + private void list_session() { + List result_session_list = manager.createQuery("select s from Session s", Session.class).getResultList(); for (Session s : result_session_list) { System.out.println(s.getCodePIN() + " " + s.getTheme()); - for(Utilisateur u : s.getUtilisateurs()){ - System.out.println(u.getId() + " " + u.getName() +" "+ u.getEmail()); - } + for (Utilisateur u : s.getUtilisateurs()) { + System.out.println(u.getId() + " " + u.getName() + " " + u.getEmail()); + } } } - }