1 package dst.ass2.service.courseplan;
3 import javax.persistence.EntityManager;
4 import javax.persistence.PersistenceContext;
6 import org.glassfish.jersey.server.ResourceConfig;
7 import org.springframework.boot.SpringBootConfiguration;
8 import org.springframework.context.annotation.Bean;
9 import org.springframework.orm.jpa.JpaTransactionManager;
10 import org.springframework.orm.jpa.LocalEntityManagerFactoryBean;
11 import org.springframework.transaction.PlatformTransactionManager;
13 import dst.ass1.jpa.dao.IDAOFactory;
14 import dst.ass1.jpa.dao.impl.DAOFactory;
15 import dst.ass1.jpa.model.IModelFactory;
16 import dst.ass1.jpa.model.impl.ModelFactory;
17 import dst.ass1.jpa.util.Constants;
19 @SpringBootConfiguration
20 public class CoursePlanApplicationConfig {
23 private EntityManager em;
26 public ResourceConfig jerseyConfig() {
27 return new ResourceConfig()
28 .packages("dst.ass2.service.courseplan");
32 public IModelFactory modelFactory() {
33 return new ModelFactory();
37 public IDAOFactory daoFactory() {
38 return new DAOFactory(em);
42 public LocalEntityManagerFactoryBean entityManagerFactoryBean() {
43 LocalEntityManagerFactoryBean bean = new LocalEntityManagerFactoryBean();
44 bean.setPersistenceUnitName(Constants.JPA_PERSISTENCE_UNIT);
45 // fixes collection proxy problem when using jersey
46 bean.getJpaPropertyMap().put("hibernate.enable_lazy_load_no_trans", true);
51 public PlatformTransactionManager transactionManager(LocalEntityManagerFactoryBean entityManagerFactoryBean) {
52 JpaTransactionManager transactionManager = new JpaTransactionManager();
53 transactionManager.setPersistenceUnitName(Constants.JPA_PERSISTENCE_UNIT);
54 transactionManager.setEntityManagerFactory(entityManagerFactoryBean.getObject());
55 return transactionManager;