more refactor to get rid of sessionfactory

This commit is contained in:
Cyrus 2022-07-25 11:58:04 -04:00
parent 509907472a
commit ea080ccd67
17 changed files with 279 additions and 227 deletions

View File

@ -98,7 +98,7 @@ public class AttestationCertificateAuthorityConfiguration implements WebMvcConfi
* *
* @return session factory * @return session factory
*/ */
@Bean // @Bean
public SessionFactory sessionFactory() { public SessionFactory sessionFactory() {
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(getSettings()).build(); ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(getSettings()).build();
MetadataSources metadataSources = new MetadataSources(serviceRegistry); MetadataSources metadataSources = new MetadataSources(serviceRegistry);

View File

@ -4,10 +4,10 @@ import hirs.attestationca.persist.DBAppraiserManager;
import hirs.attestationca.persist.DBDeviceGroupManager; import hirs.attestationca.persist.DBDeviceGroupManager;
import hirs.attestationca.persist.DBPolicyManager; import hirs.attestationca.persist.DBPolicyManager;
import hirs.utils.HIRSProfiles; import hirs.utils.HIRSProfiles;
import org.hibernate.SessionFactory;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; import javax.servlet.ServletContextListener;
@ -25,11 +25,12 @@ public class InitializationListener implements ServletContextListener {
context.refresh(); context.refresh();
// obtain reference to hibernate session factory // obtain reference to hibernate session factory
SessionFactory sessionFactory = context.getBean(LocalSessionFactoryBean.class).getObject(); // SessionFactory sessionFactory = context.getBean(LocalSessionFactoryBean.class).getObject();
EntityManager entityManager = context.getBean(EntityManagerFactory.class).createEntityManager();
AcaDbInit.insertDefaultEntries( AcaDbInit.insertDefaultEntries(
new DBAppraiserManager(sessionFactory), new DBAppraiserManager(entityManager),
new DBDeviceGroupManager(sessionFactory), new DBDeviceGroupManager(entityManager),
new DBPolicyManager(sessionFactory) new DBPolicyManager(entityManager)
); );
} }

View File

@ -1,5 +1,38 @@
package hirs.attestationca.configuration; package hirs.attestationca.configuration;
import hirs.attestationca.AttestationCertificateAuthorityConfiguration;
import hirs.attestationca.persist.DBCertificateManager;
import hirs.attestationca.persist.DBDeviceGroupManager;
import hirs.attestationca.persist.DBDeviceManager;
import hirs.attestationca.persist.DBManager;
import hirs.attestationca.persist.DBPolicyManager;
import hirs.attestationca.persist.DBPortalInfoManager;
import hirs.attestationca.persist.DBReferenceEventManager;
import hirs.attestationca.persist.DBReferenceManifestManager;
import hirs.attestationca.persist.DBReportManager;
import hirs.attestationca.persist.DBReportRequestStateManager;
import hirs.attestationca.persist.DBReportSummaryManager;
import hirs.data.persist.SupplyChainValidationSummary;
import hirs.persist.CertificateManager;
import hirs.persist.CrudManager;
import hirs.persist.DeviceGroupManager;
import hirs.persist.DeviceManager;
import hirs.persist.PolicyManager;
import hirs.persist.PortalInfoManager;
import hirs.persist.ReferenceEventManager;
import hirs.persist.ReferenceManifestManager;
import hirs.persist.ReportManager;
import hirs.persist.ReportRequestStateManager;
import hirs.persist.ReportSummaryManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceContext;
/** /**
* Persistence Configuration for Spring enabled applications. Constructs a Hibernate SessionFactory * Persistence Configuration for Spring enabled applications. Constructs a Hibernate SessionFactory
* backed powered by a HikariCP connection pooled data source. Module-specific settings * backed powered by a HikariCP connection pooled data source. Module-specific settings
@ -7,168 +40,170 @@ package hirs.attestationca.configuration;
* such as the HIRS_Portal uses this class and doesn't have a persistence-extended.properties * such as the HIRS_Portal uses this class and doesn't have a persistence-extended.properties
* file, the default persistence file will be used instead. * file, the default persistence file will be used instead.
*/ */
//@Configuration @Configuration
//@Import(AttestationCertificateAuthorityConfiguration.class) @Import(AttestationCertificateAuthorityConfiguration.class)
public class PersistenceConfiguration { public class PersistenceConfiguration {
// /** /**
// * The bean name to retrieve the default/general implementation of {@link }. * The bean name to retrieve the default/general implementation of {@link }.
// */ */
// public static final String DEVICE_STATE_MANAGER_BEAN_NAME = "general_db_man_bean"; public static final String DEVICE_STATE_MANAGER_BEAN_NAME = "general_db_man_bean";
//
// @Autowired @Autowired
// private SessionFactory sessionFactory; EntityManagerFactory entityManagerFactory;
// @PersistenceContext
// @Autowired EntityManager entityManager = entityManagerFactory.createEntityManager();
// private long retryWaitTimeMilliseconds;
// @Autowired
// @Autowired private long retryWaitTimeMilliseconds;
// private int maxTransactionRetryAttempts;
// @Autowired
// /** private int maxTransactionRetryAttempts;
// * Creates a {@link hirs.persist.PolicyManager} ready to use.
// * /**
// * @return {@link hirs.persist.PolicyManager} * Creates a {@link hirs.persist.PolicyManager} ready to use.
// */ *
// @Bean * @return {@link hirs.persist.PolicyManager}
// public PolicyManager policyManager() { */
// DBPolicyManager manager = new DBPolicyManager(sessionFactory); @Bean
// setDbManagerRetrySettings(manager); public PolicyManager policyManager() {
// return manager; DBPolicyManager manager = new DBPolicyManager(entityManager);
// } setDbManagerRetrySettings(manager);
// return manager;
// /** }
// * Creates a {@link hirs.persist.ReportManager} ready to use.
// * /**
// * @return {@link hirs.persist.ReportManager} * Creates a {@link hirs.persist.ReportManager} ready to use.
// */ *
// @Bean * @return {@link hirs.persist.ReportManager}
// public ReportManager reportManager() { */
// DBReportManager manager = new DBReportManager(sessionFactory); @Bean
// setDbManagerRetrySettings(manager); public ReportManager reportManager() {
// return manager; DBReportManager manager = new DBReportManager(entityManager);
// } setDbManagerRetrySettings(manager);
// return manager;
// /** }
// * Creates a {@link hirs.persist.DeviceManager} ready to use.
// * /**
// * @return {@link hirs.persist.DeviceManager} * Creates a {@link hirs.persist.DeviceManager} ready to use.
// */ *
// @Bean * @return {@link hirs.persist.DeviceManager}
// public DeviceManager deviceManager() { */
// DBDeviceManager manager = new DBDeviceManager(sessionFactory); @Bean
// setDbManagerRetrySettings(manager); public DeviceManager deviceManager() {
// return manager; DBDeviceManager manager = new DBDeviceManager(entityManager);
// } setDbManagerRetrySettings(manager);
// return manager;
// /** }
// * Creates a {@link hirs.persist.ReportSummaryManager} ready to use.
// * /**
// * @return {@link hirs.persist.ReportSummaryManager} * Creates a {@link hirs.persist.ReportSummaryManager} ready to use.
// */ *
// @Bean * @return {@link hirs.persist.ReportSummaryManager}
// public ReportSummaryManager reportSummaryManager() { */
// DBReportSummaryManager manager = new DBReportSummaryManager(sessionFactory); @Bean
// setDbManagerRetrySettings(manager); public ReportSummaryManager reportSummaryManager() {
// return manager; DBReportSummaryManager manager = new DBReportSummaryManager(entityManager);
// } setDbManagerRetrySettings(manager);
// return manager;
// /** }
// * Creates a {@link hirs.persist.DeviceGroupManager} ready to use.
// * /**
// * @return {@link hirs.persist.DeviceGroupManager} * Creates a {@link hirs.persist.DeviceGroupManager} ready to use.
// */ *
// @Bean * @return {@link hirs.persist.DeviceGroupManager}
// public DeviceGroupManager deviceGroupManager() { */
// DBDeviceGroupManager manager = new DBDeviceGroupManager(sessionFactory); @Bean
// setDbManagerRetrySettings(manager); public DeviceGroupManager deviceGroupManager() {
// return manager; DBDeviceGroupManager manager = new DBDeviceGroupManager(entityManager);
// } setDbManagerRetrySettings(manager);
// return manager;
// /** }
// * Creates a {@link hirs.persist.CertificateManager} ready to use.
// * /**
// * @return {@link hirs.persist.CertificateManager} * Creates a {@link hirs.persist.CertificateManager} ready to use.
// */ *
// @Bean * @return {@link hirs.persist.CertificateManager}
// public CertificateManager certificateManager() { */
// DBCertificateManager manager = new DBCertificateManager(sessionFactory); @Bean
// manager.setRetryTemplate(maxTransactionRetryAttempts, retryWaitTimeMilliseconds); public CertificateManager certificateManager() {
// return manager; DBCertificateManager manager = new DBCertificateManager(entityManager);
// } manager.setRetryTemplate(maxTransactionRetryAttempts, retryWaitTimeMilliseconds);
// return manager;
// /** }
// * Creates a {@link hirs.persist.ReferenceManifestManager} ready to use.
// * /**
// * @return {@link hirs.persist.ReferenceManifestManager} * Creates a {@link hirs.persist.ReferenceManifestManager} ready to use.
// */ *
// @Bean * @return {@link hirs.persist.ReferenceManifestManager}
// public ReferenceManifestManager referenceManifestManager() { */
// DBReferenceManifestManager manager @Bean
// = new DBReferenceManifestManager(sessionFactory); public ReferenceManifestManager referenceManifestManager() {
// setDbManagerRetrySettings(manager); DBReferenceManifestManager manager
// return manager; = new DBReferenceManifestManager(entityManager);
// } setDbManagerRetrySettings(manager);
// return manager;
// /** }
// * Creates a {@link hirs.persist.ReferenceEventManager} ready to use.
// * /**
// * @return {@link hirs.persist.ReferenceEventManager} * Creates a {@link hirs.persist.ReferenceEventManager} ready to use.
// */ *
// @Bean * @return {@link hirs.persist.ReferenceEventManager}
// public ReferenceEventManager referenceEventManager() { */
// DBReferenceEventManager manager @Bean
// = new DBReferenceEventManager(sessionFactory); public ReferenceEventManager referenceEventManager() {
// setDbManagerRetrySettings(manager); DBReferenceEventManager manager
// return manager; = new DBReferenceEventManager(entityManager);
// } setDbManagerRetrySettings(manager);
// return manager;
// /** }
// * Creates a {@link hirs.persist.ReportRequestStateManager} ready to use.
// * /**
// * @return {@link hirs.persist.ReportRequestStateManager} * Creates a {@link hirs.persist.ReportRequestStateManager} ready to use.
// */ *
// @Bean * @return {@link hirs.persist.ReportRequestStateManager}
// public ReportRequestStateManager reportRequestStateManager() { */
// DBReportRequestStateManager manager @Bean
// = new DBReportRequestStateManager(sessionFactory); public ReportRequestStateManager reportRequestStateManager() {
// setDbManagerRetrySettings(manager); DBReportRequestStateManager manager
// return manager; = new DBReportRequestStateManager(entityManager);
// } setDbManagerRetrySettings(manager);
// return manager;
// /** }
// * Creates a {@link hirs.persist.PortalInfoManager} ready to use.
// * /**
// * @return {@link hirs.persist.PortalInfoManager} * Creates a {@link hirs.persist.PortalInfoManager} ready to use.
// */ *
// @Bean * @return {@link hirs.persist.PortalInfoManager}
// public PortalInfoManager portalInfoManager() { */
// DBPortalInfoManager manager = new DBPortalInfoManager(sessionFactory); @Bean
// setDbManagerRetrySettings(manager); public PortalInfoManager portalInfoManager() {
// return manager; DBPortalInfoManager manager = new DBPortalInfoManager(entityManager);
// } setDbManagerRetrySettings(manager);
// return manager;
// /** }
// * Creates a {@link hirs.attestationca.persist.DBManager} for SupplyChainValidationSummary persistence, ready for use.
// * /**
// * @return {@link hirs.attestationca.persist.DBManager} * Creates a {@link hirs.attestationca.persist.DBManager} for SupplyChainValidationSummary persistence, ready for use.
// */ *
// @Bean * @return {@link hirs.attestationca.persist.DBManager}
// public CrudManager<SupplyChainValidationSummary> supplyChainValidationSummaryManager() { */
// DBManager<SupplyChainValidationSummary> manager @Bean
// = new DBManager<SupplyChainValidationSummary>( public CrudManager<SupplyChainValidationSummary> supplyChainValidationSummaryManager() {
// SupplyChainValidationSummary.class, DBManager<SupplyChainValidationSummary> manager
// sessionFactory = new DBManager<SupplyChainValidationSummary>(
// ); SupplyChainValidationSummary.class,
// setDbManagerRetrySettings(manager); entityManager
// return manager; );
// } setDbManagerRetrySettings(manager);
// return manager;
// /** }
// * Apply the spring-wired retry template settings to the db manager.
// * @param dbManager the manager to apply the retry settings to /**
// */ * Apply the spring-wired retry template settings to the db manager.
// private void setDbManagerRetrySettings(final DBManager dbManager) { * @param dbManager the manager to apply the retry settings to
// dbManager.setRetryTemplate(maxTransactionRetryAttempts, retryWaitTimeMilliseconds); */
// } private void setDbManagerRetrySettings(final DBManager dbManager) {
dbManager.setRetryTemplate(maxTransactionRetryAttempts, retryWaitTimeMilliseconds);
}
} }

View File

@ -12,15 +12,20 @@ import org.hibernate.Session;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
import org.hibernate.StatelessSession; import org.hibernate.StatelessSession;
import org.hibernate.Transaction; import org.hibernate.Transaction;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.criterion.Conjunction; import org.hibernate.criterion.Conjunction;
import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Disjunction; import org.hibernate.criterion.Disjunction;
import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions; import org.hibernate.criterion.Restrictions;
import org.hibernate.query.Query; import org.hibernate.query.Query;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.spi.ServiceRegistryImplementor; import org.hibernate.service.spi.ServiceRegistryImplementor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
@ -50,30 +55,31 @@ public abstract class AbstractDbManager<T> implements CrudManager<T> {
private Class<T> clazz; private Class<T> clazz;
private SessionFactory factory; private EntityManager em;
/** /**
* Creates a new <code>AbstractDbManager</code>. * Creates a new <code>AbstractDbManager</code>.
* *
* @param clazz Class to search for when doing Hibernate queries, * @param clazz Class to search for when doing Hibernate queries,
* unfortunately class type of T cannot be determined using only T * unfortunately class type of T cannot be determined using only T
* @param sessionFactory the session factory to use to interact with the database * @param em the entity manager to use to interact with the database
*/ */
public AbstractDbManager(final Class<T> clazz, final SessionFactory sessionFactory) { public AbstractDbManager(final Class<T> clazz, final EntityManager em) {
if (clazz == null) { if (clazz == null) {
LOGGER.error("AbstractDbManager cannot be instantiated with a null class"); LOGGER.error("AbstractDbManager cannot be instantiated with a null class");
throw new IllegalArgumentException( throw new IllegalArgumentException(
"AbstractDbManager cannot be instantiated with a null class" "AbstractDbManager cannot be instantiated with a null class"
); );
} }
if (sessionFactory == null) { if (em == null) {
LOGGER.error("AbstractDbManager cannot be instantiated with a null SessionFactory"); LOGGER.error("AbstractDbManager cannot be instantiated with a null SessionFactory");
throw new IllegalArgumentException( throw new IllegalArgumentException(
"AbstractDbManager cannot be instantiated with a null SessionFactory" "AbstractDbManager cannot be instantiated with a null SessionFactory"
); );
} }
this.clazz = clazz; this.clazz = clazz;
this.factory = sessionFactory; this.em = em;
// this.factory = sessionFactory;
} }
@Override @Override
@ -87,7 +93,7 @@ public abstract class AbstractDbManager<T> implements CrudManager<T> {
* @return the configured database implementation * @return the configured database implementation
*/ */
protected DBManager.DBImpl getConfiguredImplementation() { protected DBManager.DBImpl getConfiguredImplementation() {
String dialect = ((ServiceRegistryImplementor) factory).getParentServiceRegistry() String dialect = ((ServiceRegistryImplementor) em).getParentServiceRegistry()
.getParentServiceRegistry().toString().toLowerCase(); .getParentServiceRegistry().toString().toLowerCase();
if (dialect.contains("hsql")) { if (dialect.contains("hsql")) {
return DBManager.DBImpl.HSQL; return DBManager.DBImpl.HSQL;
@ -122,7 +128,8 @@ public abstract class AbstractDbManager<T> implements CrudManager<T> {
boolean deleted = false; boolean deleted = false;
Transaction tx = null; Transaction tx = null;
Session session = factory.getCurrentSession(); Session session = em.unwrap(org.hibernate.Session.class);
//factory.getCurrentSession();
try { try {
LOGGER.debug("retrieving object from db"); LOGGER.debug("retrieving object from db");
tx = session.beginTransaction(); tx = session.beginTransaction();
@ -167,7 +174,7 @@ public abstract class AbstractDbManager<T> implements CrudManager<T> {
boolean deleted = false; boolean deleted = false;
Transaction tx = null; Transaction tx = null;
Session session = factory.getCurrentSession(); Session session = em.unwrap(org.hibernate.Session.class);
CriteriaBuilder builder = session.getCriteriaBuilder(); CriteriaBuilder builder = session.getCriteriaBuilder();
try { try {
@ -227,7 +234,7 @@ public abstract class AbstractDbManager<T> implements CrudManager<T> {
} }
Transaction tx = null; Transaction tx = null;
Session session = factory.getCurrentSession(); Session session = em.unwrap(org.hibernate.Session.class);
try { try {
LOGGER.debug("deleting object from db"); LOGGER.debug("deleting object from db");
tx = session.beginTransaction(); tx = session.beginTransaction();
@ -255,7 +262,7 @@ public abstract class AbstractDbManager<T> implements CrudManager<T> {
protected int doDeleteAll() throws DBManagerException { protected int doDeleteAll() throws DBManagerException {
int numEntitiesDeleted = 0; int numEntitiesDeleted = 0;
Transaction tx = null; Transaction tx = null;
Session session = factory.getCurrentSession(); Session session = em.unwrap(org.hibernate.Session.class);
try { try {
LOGGER.debug("Deleting instances of class: {}", this.clazz.getClass()); LOGGER.debug("Deleting instances of class: {}", this.clazz.getClass());
tx = session.beginTransaction(); tx = session.beginTransaction();
@ -327,7 +334,7 @@ public abstract class AbstractDbManager<T> implements CrudManager<T> {
} }
List<T> ret = new ArrayList<>(); List<T> ret = new ArrayList<>();
Transaction tx = null; Transaction tx = null;
Session session = factory.getCurrentSession(); Session session = em.unwrap(org.hibernate.Session.class);
try { try {
LOGGER.debug("retrieving criteria from db"); LOGGER.debug("retrieving criteria from db");
tx = session.beginTransaction(); tx = session.beginTransaction();
@ -385,7 +392,7 @@ public abstract class AbstractDbManager<T> implements CrudManager<T> {
} }
Transaction tx = null; Transaction tx = null;
Session session = factory.getCurrentSession(); Session session = em.unwrap(org.hibernate.Session.class);
try { try {
LOGGER.debug("saving object in db"); LOGGER.debug("saving object in db");
tx = session.beginTransaction(); tx = session.beginTransaction();
@ -419,7 +426,7 @@ public abstract class AbstractDbManager<T> implements CrudManager<T> {
} }
Transaction tx = null; Transaction tx = null;
Session session = factory.getCurrentSession(); Session session = em.unwrap(org.hibernate.Session.class);
try { try {
LOGGER.debug("updating object in db"); LOGGER.debug("updating object in db");
tx = session.beginTransaction(); tx = session.beginTransaction();

View File

@ -6,9 +6,9 @@ import hirs.persist.AppraiserManagerException;
import hirs.persist.DBManagerException; import hirs.persist.DBManagerException;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import java.util.List; import java.util.List;
/** /**
@ -24,10 +24,10 @@ public class DBAppraiserManager extends DBManager<Appraiser> implements Appraise
* database. The default database is used to store all of the * database. The default database is used to store all of the
* <code>Appraiser</code>s. * <code>Appraiser</code>s.
* *
* @param sessionFactory session factory used to access database connections * @param em entity manager used to access database connections
*/ */
public DBAppraiserManager(final SessionFactory sessionFactory) { public DBAppraiserManager(final EntityManager em) {
super(Appraiser.class, sessionFactory); super(Appraiser.class, em);
} }
/** /**

View File

@ -6,12 +6,12 @@ import hirs.persist.CertificateSelector;
import hirs.persist.DBManagerException; import hirs.persist.DBManagerException;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.hibernate.SessionFactory;
import org.springframework.retry.RetryCallback; import org.springframework.retry.RetryCallback;
import org.springframework.retry.RetryContext; import org.springframework.retry.RetryContext;
import org.springframework.retry.support.RetryTemplate; import org.springframework.retry.support.RetryTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
@ -32,10 +32,10 @@ public class DBCertificateManager extends DBManager<Certificate>
* Creates a new {@link DBCertificateManager} that uses the default * Creates a new {@link DBCertificateManager} that uses the default
* database. * database.
* *
* @param sessionFactory session factory used to access database connections * @param em entity manager used to access database connections
*/ */
public DBCertificateManager(final SessionFactory sessionFactory) { public DBCertificateManager(final EntityManager em) {
super(Certificate.class, sessionFactory); super(Certificate.class, em);
} }
/** /**

View File

@ -17,6 +17,7 @@ import org.hibernate.Transaction;
import org.hibernate.query.Query; import org.hibernate.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
@ -40,10 +41,10 @@ public class DBDeviceGroupManager extends DBManager<DeviceGroup> implements Devi
* Creates a new <code>DBDeviceGroupManager</code> and sets the * Creates a new <code>DBDeviceGroupManager</code> and sets the
* <code>SessionFactory</code> to the given instance. * <code>SessionFactory</code> to the given instance.
* *
* @param factory session factory used to access database connections * @param em session factory used to access database connections
*/ */
public DBDeviceGroupManager(final SessionFactory factory) { public DBDeviceGroupManager(final EntityManager em) {
super(DeviceGroup.class, factory); super(DeviceGroup.class, em);
} }
/** /**

View File

@ -17,6 +17,7 @@ import org.hibernate.Transaction;
import org.hibernate.query.Query; import org.hibernate.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.JoinType; import javax.persistence.criteria.JoinType;
@ -45,10 +46,10 @@ public class DBDeviceManager extends DBManager<Device> implements
* database. The default database is used to store all of the * database. The default database is used to store all of the
* <code>Device</code>s. * <code>Device</code>s.
* *
* @param sessionFactory session factory used to access database connections * @param em entity manager used to access database connections
*/ */
public DBDeviceManager(final SessionFactory sessionFactory) { public DBDeviceManager(final EntityManager em) {
super(Device.class, sessionFactory); super(Device.class, em);
} }
/** /**

View File

@ -19,6 +19,7 @@ import org.springframework.retry.policy.SimpleRetryPolicy;
import org.springframework.retry.support.RetryTemplate; import org.springframework.retry.support.RetryTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collection; import java.util.Collection;
@ -68,11 +69,11 @@ public class DBManager<T> extends AbstractDbManager<T> {
* default database is used to store all of the objects. * default database is used to store all of the objects.
* *
* @param clazz Class to search for when doing Hibernate queries * @param clazz Class to search for when doing Hibernate queries
* @param sessionFactory the session factory to use to connect to the database * @param em the entity manager to use to connect to the database
* unfortunately class type of T cannot be determined using only T * unfortunately class type of T cannot be determined using only T
*/ */
public DBManager(final Class<T> clazz, final SessionFactory sessionFactory) { public DBManager(final Class<T> clazz, final EntityManager em) {
super(clazz, sessionFactory); super(clazz, em);
setRetryTemplate(DEFAULT_MAX_RETRY_ATTEMPTS, DEFAULT_RETRY_WAIT_TIME_MS); setRetryTemplate(DEFAULT_MAX_RETRY_ATTEMPTS, DEFAULT_RETRY_WAIT_TIME_MS);
} }

View File

@ -17,6 +17,7 @@ import org.hibernate.Transaction;
import org.hibernate.query.Query; import org.hibernate.query.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
@ -38,10 +39,10 @@ public class DBPolicyManager extends DBManager<Policy> implements PolicyManager
* parameter is used to initialize a session factory to manage all hibernate * parameter is used to initialize a session factory to manage all hibernate
* sessions. * sessions.
* *
* @param factory session factory to manage connections to hibernate db * @param em Entity Manager to manage connections to hibernate db
*/ */
public DBPolicyManager(final SessionFactory factory) { public DBPolicyManager(final EntityManager em) {
super(Policy.class, factory); super(Policy.class, em);
} }
/** /**

View File

@ -7,9 +7,9 @@ import hirs.persist.PortalInfoManager;
import hirs.persist.PortalInfoManagerException; import hirs.persist.PortalInfoManagerException;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
@ -26,10 +26,10 @@ public class DBPortalInfoManager extends DBManager<PortalInfo> implements Portal
* Creates a new <code>DBPortalInfoManager</code>. The optional SessionFactory parameter is * Creates a new <code>DBPortalInfoManager</code>. The optional SessionFactory parameter is
* used to manage sessions with a hibernate db. * used to manage sessions with a hibernate db.
* *
* @param factory a hibernate session * @param em a hibernate session
*/ */
public DBPortalInfoManager(final SessionFactory factory) { public DBPortalInfoManager(final EntityManager em) {
super(PortalInfo.class, factory); super(PortalInfo.class, em);
} }
/** /**

View File

@ -11,11 +11,11 @@ import hirs.persist.ReferenceEventManager;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction; import org.hibernate.Transaction;
import org.hibernate.query.Query; import org.hibernate.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
@ -39,10 +39,10 @@ public class DBReferenceEventManager extends DBManager<ReferenceDigestValue>
/** /**
* Default Constructor. * Default Constructor.
* *
* @param sessionFactory session factory used to access database connections * @param em entity manager used to access database connections
*/ */
public DBReferenceEventManager(final SessionFactory sessionFactory) { public DBReferenceEventManager(final EntityManager em) {
super(ReferenceDigestValue.class, sessionFactory); super(ReferenceDigestValue.class, em);
this.setClazz(ReferenceDigestValue.class); this.setClazz(ReferenceDigestValue.class);
} }

View File

@ -5,9 +5,9 @@ import hirs.persist.ReferenceManifestManager;
import hirs.persist.ReferenceManifestSelector; import hirs.persist.ReferenceManifestSelector;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
@ -24,10 +24,10 @@ public class DBReferenceManifestManager extends DBManager<ReferenceManifest>
/** /**
* Default Constructor. * Default Constructor.
* *
* @param sessionFactory session factory used to access database connections * @param em entity manager used to access database connections
*/ */
public DBReferenceManifestManager(final SessionFactory sessionFactory) { public DBReferenceManifestManager(final EntityManager em) {
super(ReferenceManifest.class, sessionFactory); super(ReferenceManifest.class, em);
} }
/** /**

View File

@ -6,13 +6,13 @@ import hirs.persist.ReportManager;
import hirs.persist.ReportManagerException; import hirs.persist.ReportManagerException;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Conjunction; import org.hibernate.criterion.Conjunction;
import org.hibernate.criterion.Disjunction; import org.hibernate.criterion.Disjunction;
import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions; import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
@ -32,10 +32,10 @@ public class DBReportManager extends DBManager<Report> implements ReportManager
* Creates a new <code>DBReportManager</code> that uses the provided sessionFactory * Creates a new <code>DBReportManager</code> that uses the provided sessionFactory
* to interact with a database. * to interact with a database.
* *
* @param sessionFactory session factory used to access database connections * @param em entity manager used to access database connections
*/ */
public DBReportManager(final SessionFactory sessionFactory) { public DBReportManager(final EntityManager em) {
super(Report.class, sessionFactory); super(Report.class, em);
} }
/** /**

View File

@ -5,9 +5,9 @@ import hirs.data.persist.ReportRequestState;
import hirs.persist.ReportRequestStateManager; import hirs.persist.ReportRequestStateManager;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root; import javax.persistence.criteria.Root;
@ -28,10 +28,10 @@ public class DBReportRequestStateManager extends DBManager<ReportRequestState>
* Creates a new <code>DBReportRequestStateManager</code> that uses the default database. The * Creates a new <code>DBReportRequestStateManager</code> that uses the default database. The
* default database is used to store all of the <code>ReportRequestState</code>s. * default database is used to store all of the <code>ReportRequestState</code>s.
* *
* @param sessionFactory session factory used to access database connections * @param em entity manager used to access database connections
*/ */
public DBReportRequestStateManager(final SessionFactory sessionFactory) { public DBReportRequestStateManager(final EntityManager em) {
super(ReportRequestState.class, sessionFactory); super(ReportRequestState.class, em);
} }
/** /**

View File

@ -6,12 +6,12 @@ import hirs.persist.ReportSummaryManager;
import hirs.persist.ReportSummaryManagerException; import hirs.persist.ReportSummaryManagerException;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction; import org.hibernate.Transaction;
import org.hibernate.criterion.Order; import org.hibernate.criterion.Order;
import org.hibernate.query.Query; import org.hibernate.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
@ -39,10 +39,10 @@ public class DBReportSummaryManager extends DBManager<ReportSummary>
* The default database is used to store all of the * The default database is used to store all of the
* <code>ReportSummary</code> objects. * <code>ReportSummary</code> objects.
* *
* @param sessionFactory session factory used to access database connections * @param em entity manager used to access database connections
*/ */
public DBReportSummaryManager(final SessionFactory sessionFactory) { public DBReportSummaryManager(final EntityManager em) {
super(ReportSummary.class, sessionFactory); super(ReportSummary.class, em);
} }
/** /**

View File

@ -3,7 +3,8 @@
persistence.db.url = jdbc:mariadb://localhost/hirs_db?autoReconnect=true&useSSL=true&requireSSL=true&amp;enabledSslProtocolSuites=TLSv1&disableSslHostnameVerification=true persistence.db.url = jdbc:mariadb://localhost/hirs_db?autoReconnect=true&useSSL=true&requireSSL=true&amp;enabledSslProtocolSuites=TLSv1&disableSslHostnameVerification=true
persistence.db.username = hirs_db persistence.db.username = hirs_db
persistence.db.password = hirs_db persistence.db.password = hirs_db
persistence.db.driverClass = org.mariadb.jdbc.Driver # update?
persistence.db.driverClass = org.mariadb.jdbc.Driver
persistence.db.maximumPoolSize = 10 persistence.db.maximumPoolSize = 10
persistence.db.connectionTimeout = 30000 persistence.db.connectionTimeout = 30000
persistence.db.leakDetectionThreshold = 0 persistence.db.leakDetectionThreshold = 0
@ -17,3 +18,7 @@ hibernate.show_sql = true
hibernate.format_sql = true hibernate.format_sql = true
persistence.hibernate.contextClass = org.springframework.orm.hibernate5.SpringSessionContext persistence.hibernate.contextClass = org.springframework.orm.hibernate5.SpringSessionContext
persistence.hibernate.provider = org.hibernate.hikaricp.internal.HikariCPConnectionProvider persistence.hibernate.provider = org.hibernate.hikaricp.internal.HikariCPConnectionProvider
# caching the entity manager in a persistence
# inject the entity manger in spring using context