1.1 --- a/src/main/java/ru/indvdum/jpa/dao/JPADataAccessObject.groovy Sun Nov 11 02:45:26 2012 +0400
1.2 +++ b/src/main/java/ru/indvdum/jpa/dao/JPADataAccessObject.groovy Sun Nov 11 03:17:06 2012 +0400
1.3 @@ -1,18 +1,66 @@
1.4 -package ru.indvdum.jpa.dao
1.5 import java.sql.Connection
1.6 import java.sql.SQLException
1.7 import java.util.Map.Entry
1.8
1.9 import javax.persistence.EntityManager
1.10 import javax.persistence.EntityManagerFactory
1.11 import javax.persistence.EntityTransaction
1.12 import javax.persistence.NoResultException
1.13 import javax.persistence.Persistence
1.14 import javax.persistence.Query
1.15 import javax.persistence.criteria.CriteriaBuilder
1.16 import javax.persistence.criteria.CriteriaQuery
1.17 import javax.persistence.criteria.Predicate
1.18 import javax.persistence.criteria.Root
1.19 import javax.sql.DataSource
1.20
1.21 import org.apache.commons.configuration.XMLConfiguration
1.22 import org.apache.openjpa.conf.OpenJPAConfiguration
1.23 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI
1.24 import org.apache.openjpa.persistence.OpenJPAPersistence
1.25 import org.slf4j.Logger
1.26 import org.slf4j.LoggerFactory
1.27
1.28 import ru.indvdum.jpa.props.Props
1.29
1.30 +package ru.indvdum.jpa.dao
1.31 +import java.sql.Connection
1.32 +import java.sql.SQLException
1.33 +import java.util.Map.Entry
1.34 +
1.35 +import javax.persistence.EntityManager
1.36 +import javax.persistence.EntityManagerFactory
1.37 +import javax.persistence.EntityTransaction
1.38 +import javax.persistence.NoResultException
1.39 +import javax.persistence.Persistence
1.40 +import javax.persistence.Query
1.41 +import javax.persistence.criteria.CriteriaBuilder
1.42 +import javax.persistence.criteria.CriteriaQuery
1.43 +import javax.persistence.criteria.Predicate
1.44 +import javax.persistence.criteria.Root
1.45 +import javax.sql.DataSource
1.46 +
1.47 +import org.apache.commons.configuration.XMLConfiguration
1.48 +import org.apache.openjpa.conf.OpenJPAConfiguration
1.49 +import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI
1.50 +import org.apache.openjpa.persistence.OpenJPAPersistence
1.51 +import org.slf4j.Logger
1.52 +import org.slf4j.LoggerFactory
1.53 +
1.54 +import ru.indvdum.jpa.props.Props
1.55 +
1.56 /**
1.57 * @author indvdum (gotoindvdum[at]gmail[dot]com)
1.58 * @since 08.11.2012 23:35:04
1.59 *
1.60 */
1.61 public class JPADataAccessObject {
1.62 -
1.63 protected static Logger log = LoggerFactory.getLogger(JPADataAccessObject.class.getSimpleName());
1.64 +
1.65 + protected static Logger log = LoggerFactory.getLogger(JPADataAccessObject.class.getSimpleName());
1.66 protected static String persistenceUnitName = null;
1.67 protected static EntityManagerFactory emf = Persistence.createEntityManagerFactory(getPersistenceUnitName(), JPAPropertySelector.select());
1.68 protected EntityManager em = emf.createEntityManager();
1.69
1.70 JPADataAccessObject() {
1.71 em.isOpen();
1.72 - }
1.73
1.74 protected static String getPersistenceUnitName() {
1.75 if (persistenceUnitName != null)
1.76 return persistenceUnitName;
1.77
1.78 if (persistenceUnitName == null)
1.79 persistenceUnitName = System.getProperty(Props.PERSISTANCE_UNIT_NAME_PROPERTY);
1.80 if (persistenceUnitName == null) {
1.81 try {
1.82 persistenceUnitName = ResourceBundle.getBundle(Props.JPADAO_PROPERTY_FILE).getString(Props.PERSISTANCE_UNIT_NAME_PROPERTY);
1.83 } catch (MissingResourceException e) {
1.84 log.info("Configuration file " + Props.JPADAO_PROPERTY_FILE + ".properties not found");
1.85 }
1.86 }
1.87 if (persistenceUnitName == null) {
1.88 XMLConfiguration conf = new XMLConfiguration("META-INF/persistence.xml");
1.89 persistenceUnitName = conf.getString("persistence-unit[@name]");
1.90 }
1.91 if (persistenceUnitName == null)
1.92 persistenceUnitName = "database";
1.93 return persistenceUnitName;
1.94 }
1.95 + }
1.96 +
1.97 + protected static String getPersistenceUnitName() {
1.98 + if (persistenceUnitName != null)
1.99 + return persistenceUnitName;
1.100 +
1.101 + if (persistenceUnitName == null)
1.102 + persistenceUnitName = System.getProperty(Props.PERSISTANCE_UNIT_NAME_PROPERTY);
1.103 + if (persistenceUnitName == null) {
1.104 + try {
1.105 + persistenceUnitName = ResourceBundle.getBundle(Props.JPADAO_PROPERTY_FILE).getString(Props.PERSISTANCE_UNIT_NAME_PROPERTY);
1.106 + } catch (MissingResourceException e) {
1.107 + log.info("Configuration file " + Props.JPADAO_PROPERTY_FILE + ".properties not found");
1.108 + }
1.109 + }
1.110 + if (persistenceUnitName == null) {
1.111 + XMLConfiguration conf = new XMLConfiguration("META-INF/persistence.xml");
1.112 + persistenceUnitName = conf.getString("persistence-unit[@name]");
1.113 + }
1.114 + if (persistenceUnitName == null)
1.115 + persistenceUnitName = "database";
1.116 + return persistenceUnitName;
1.117 + }
1.118
1.119 public static Connection getSQLConnection() throws SQLException {
1.120 OpenJPAEntityManagerFactorySPI openjpaemf = (OpenJPAEntityManagerFactorySPI) OpenJPAPersistence.cast(emf);