diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/beans/CategoryManager.java | 21 | ||||
| -rw-r--r-- | src/beans/ProductManager.java | 11 | ||||
| -rw-r--r-- | src/beans/UserManager.java | 17 | ||||
| -rw-r--r-- | src/jpa/EntityManagerFactorySingleton.java | 54 |
4 files changed, 80 insertions, 23 deletions
diff --git a/src/beans/CategoryManager.java b/src/beans/CategoryManager.java index fc3d438..db42f37 100644 --- a/src/beans/CategoryManager.java +++ b/src/beans/CategoryManager.java @@ -17,11 +17,10 @@ import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.context.FacesContext; import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; -import javax.persistence.Persistence; import jpa.Category; +import jpa.EntityManagerFactorySingleton; @ManagedBean(name = "CategoryManager") @SessionScoped @@ -41,10 +40,14 @@ public class CategoryManager public Collection getCategories() { - EntityManagerFactory factory = Persistence - .createEntityManagerFactory("catalog"); - EntityManager manager = factory.createEntityManager(); - return manager.createQuery("SELECT c FROM Category c ").getResultList(); + EntityManager manager = EntityManagerFactorySingleton.getInstance() + .getEntityManagerFactory().createEntityManager(); + + Collection categories = manager.createQuery("SELECT c FROM Category c ") + .getResultList(); + manager.close(); + + return categories; } public void select(javax.faces.event.ActionEvent actionEvent) @@ -54,9 +57,8 @@ public class CategoryManager Integer selectedId = Integer.valueOf((String) params.get("selectedId")); // System.out.println(selectedId); - EntityManagerFactory factory = Persistence - .createEntityManagerFactory("catalog"); - EntityManager manager = factory.createEntityManager(); + EntityManager manager = EntityManagerFactorySingleton.getInstance() + .getEntityManagerFactory().createEntityManager(); EntityTransaction tx = manager.getTransaction(); tx.begin(); @@ -83,5 +85,6 @@ public class CategoryManager e.printStackTrace(); } context.responseComplete(); + manager.close(); } } diff --git a/src/beans/ProductManager.java b/src/beans/ProductManager.java index d499e3c..3442c52 100644 --- a/src/beans/ProductManager.java +++ b/src/beans/ProductManager.java @@ -16,10 +16,9 @@ import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.context.FacesContext; import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; -import javax.persistence.Persistence; +import jpa.EntityManagerFactorySingleton; import jpa.Product; @ManagedBean(name = "ProductManager") @@ -37,12 +36,11 @@ public class ProductManager { FacesContext facesContext = FacesContext.getCurrentInstance(); Map params = facesContext.getExternalContext().getRequestParameterMap(); - String selectedId = (String) params.get("selectedId"); + int selectedId = Integer.valueOf((String) params.get("selectedId"), 10); // System.out.println(selectedId); - EntityManagerFactory factory = Persistence - .createEntityManagerFactory("catalog"); - EntityManager manager = factory.createEntityManager(); + EntityManager manager = EntityManagerFactorySingleton.getInstance() + .getEntityManagerFactory().createEntityManager(); EntityTransaction tx = manager.getTransaction(); tx.begin(); @@ -69,6 +67,7 @@ public class ProductManager e.printStackTrace(); } context.responseComplete(); + manager.close(); } } diff --git a/src/beans/UserManager.java b/src/beans/UserManager.java index 190926b..36fd807 100644 --- a/src/beans/UserManager.java +++ b/src/beans/UserManager.java @@ -16,11 +16,10 @@ import java.util.List; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; -import javax.persistence.Persistence; import javax.persistence.Query; +import jpa.EntityManagerFactorySingleton; import jpa.User; @ManagedBean(name = "UserManager") @@ -43,9 +42,8 @@ public class UserManager && current.getPassword() != null && current.getPassword().length() > 0) { - EntityManagerFactory factory = Persistence - .createEntityManagerFactory("catalog"); - EntityManager manager = factory.createEntityManager(); + EntityManager manager = EntityManagerFactorySingleton.getInstance() + .getEntityManagerFactory().createEntityManager(); Query query = manager.createQuery( "SELECT u FROM User u where u.username = :username and u.password = :password"); query.setParameter("username", current.getUsername()); @@ -58,6 +56,8 @@ public class UserManager current = (User) results.get(0); outcome = "success"; } + + manager.close(); } // System.out.println(outcome); return outcome; @@ -97,9 +97,8 @@ public class UserManager public User getCurrent() { - EntityManagerFactory factory = Persistence - .createEntityManagerFactory("catalog"); - EntityManager manager = factory.createEntityManager(); + EntityManager manager = EntityManagerFactorySingleton.getInstance() + .getEntityManagerFactory().createEntityManager(); EntityTransaction tx = manager.getTransaction(); tx.begin(); @@ -115,6 +114,8 @@ public class UserManager tx.rollback(); } + manager.close(); + return current; } } diff --git a/src/jpa/EntityManagerFactorySingleton.java b/src/jpa/EntityManagerFactorySingleton.java new file mode 100644 index 0000000..dbd4873 --- /dev/null +++ b/src/jpa/EntityManagerFactorySingleton.java @@ -0,0 +1,54 @@ +/** + * + */ +package jpa; + +import javax.annotation.PreDestroy; +import javax.enterprise.context.ApplicationScoped; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; + +/** + * A singleton for application wide {@link EntityManagerFactory}. Increases + * performance significant. + * + * @author Stefan Suhren + * @version 1.0 + */ +@ApplicationScoped +public class EntityManagerFactorySingleton +{ + private static final String DB_PU = "catalog"; + + private static final EntityManagerFactorySingleton singleton = new EntityManagerFactorySingleton(); + + private EntityManagerFactory emf; + + private EntityManagerFactorySingleton() + { + } + + public static EntityManagerFactorySingleton getInstance() + { + return singleton; + } + + public EntityManagerFactory getEntityManagerFactory() + { + if (emf == null) + { + emf = Persistence.createEntityManagerFactory(DB_PU); + } + return emf; + } + + @PreDestroy + public void closeEmf() + { + if (emf != null && emf.isOpen()) + { + emf.close(); + } + emf = null; + } +} |
