Facebook
From Voluminous Shama, 7 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 404
  1. package pl.polsl.zti.db1.dao;
  2.  
  3. import java.util.List;
  4. import javax.persistence.EntityManager;
  5. import javax.persistence.EntityManagerFactory;
  6. import javax.persistence.EntityTransaction;
  7. import javax.persistence.Persistence;
  8. import javax.persistence.Query;
  9. import pl.polsl.zti.db1.ConfigConsts;
  10. import pl.polsl.zti.db1.domain.Client;
  11.  
  12. public class ClientDaoImplJpa implements ClientDao {
  13.  
  14.     private static final EntityManagerFactory ENTITY_MANAGER_FACTORY;
  15.  
  16.     static {
  17.         ENTITY_MANAGER_FACTORY = Persistence.createEntityManagerFactory(ConfigConsts.PERSISTANCE_UNIT_NAME);
  18.     }
  19.  
  20.     @Override
  21.     public Client getClient(int id) {
  22.         final EntityManager entityManager = ENTITY_MANAGER_FACTORY.createEntityManager();
  23.         final Client theClient = entityManager.find(Client.class, id);
  24.         entityManager.close();
  25.         return theClient;
  26.     }
  27.  
  28.     @Override
  29.     public List<Client> getClients() {
  30.         final EntityManager entityManager = ENTITY_MANAGER_FACTORY.createEntityManager();
  31.         final Query query = entityManager.createQuery("select c from Client as c", Client.class);
  32.         // działa w Hibernate, ale nie w EclipseLink:
  33. //        final Query query = entityManager.createQuery("from Client", Client.class);
  34.         final List<Client> clientList = query.getResultList();
  35.         entityManager.close();
  36.         return clientList;
  37.     }
  38.  
  39.     @Override
  40.     public List<Client> getClients(String name) {
  41.         if (name == null || name.trim().isEmpty()) {
  42.             return getClients();
  43.         }
  44.  
  45.         final EntityManager entityManager = ENTITY_MANAGER_FACTORY.createEntityManager();
  46.         final Query query = entityManager.createQuery("select c from Client as c where c.name like :param", Client.class);
  47.         query.setParameter("param", name);
  48.         final List<Client> clientList = query.getResultList();
  49.         entityManager.close();
  50.         return clientList;
  51.     }
  52.  
  53.     @Override
  54.     public void insertClients(List<Client> clients) {
  55.         final EntityManager entityManager = ENTITY_MANAGER_FACTORY.createEntityManager();
  56.         final EntityTransaction transaction = entityManager.getTransaction();
  57.         transaction.begin();
  58.         for (Client cln:clients){
  59.         final Client managedClient = entityManager.merge(cln);
  60.         }
  61.         transaction.commit();
  62.         entityManager.close();
  63.     }
  64.  
  65.     @Override
  66.     public void updateClient(Client client) {
  67.         final EntityManager entityManager = ENTITY_MANAGER_FACTORY.createEntityManager();
  68.         final EntityTransaction transaction = entityManager.getTransaction();
  69.         transaction.begin();
  70.         final Client managedClient = entityManager.merge(client);
  71.         transaction.commit();
  72.         entityManager.close();
  73.     }
  74.  
  75.     @Override
  76.     public void deleteClient(Client client) {
  77.         final EntityManager entityManager = ENTITY_MANAGER_FACTORY.createEntityManager();
  78.         final EntityTransaction transaction = entityManager.getTransaction();
  79.         transaction.begin();
  80.  
  81.         // wersja 1
  82.         //final Client managedClient = entityManager.merge(client);
  83.         // wersja 2 - bardziej efektywna
  84.         final Client managedClient = entityManager.find(Client.class, client.getId());
  85.  
  86.         entityManager.remove(managedClient);
  87.  
  88.         transaction.commit();
  89.         entityManager.close();
  90.     }
  91.  
  92.     @Override
  93.     public void deleteClient(int id) {
  94.         // Zaimplementować usuwanie klienta o podanym id
  95.         // Najpierw wydobyć klienta, potem go usunąć
  96.  
  97.         final EntityManager entityManager = ENTITY_MANAGER_FACTORY.createEntityManager();
  98.         final EntityTransaction transaction = entityManager.getTransaction();
  99.         transaction.begin();
  100.         final Client managedClient = entityManager.find(Client.class, id);
  101.  
  102.         entityManager.remove(managedClient);
  103.  
  104.         transaction.commit();
  105.         entityManager.close();
  106.     }
  107. }
  108.