Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Configuration
- @EnableTransactionManagement
- public class PersistenceConfiguration {
- @Bean
- public BasicDataSource driverManagerDataSource() {
- final BasicDataSource dataSource = new BasicDataSource();
- dataSource.setDriverClassName("com.mysql.jdbc.Driver");
- dataSource.setUrl("jdbc:mysql://localhost:3306/xxx");
- dataSource.setUsername("root");
- dataSource.setPassword("root");
- dataSource.setValidationQuery("SELECT 1");
- dataSource.setDefaultAutoCommit(false);
- dataSource.setInitialSize(10);
- dataSource.setMaxActive(20);
- dataSource.setMaxIdle(10);
- return dataSource;
- }
- @Bean
- public LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean() {
- final LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
- localContainerEntityManagerFactoryBean.setDataSource(driverManagerDataSource());
- localContainerEntityManagerFactoryBean.setPersistenceUnitName("xxxPersistenceUnitName");
- localContainerEntityManagerFactoryBean.setPackagesToScan("org.xxx.model");
- localContainerEntityManagerFactoryBean.setJpaVendorAdapter(new org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter());
- final HashMap<String, String> map = new HashMap<>();
- map.put("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
- map.put("hibernate.hbm2ddl.auto", "update");
- map.put("hibernate.show_sql", "false");
- map.put("hibernate.format_sql", "false");
- localContainerEntityManagerFactoryBean.setJpaPropertyMap(map);
- localContainerEntityManagerFactoryBean.setJpaDialect(new org.springframework.orm.jpa.vendor.HibernateJpaDialect());
- return localContainerEntityManagerFactoryBean;
- }
- @Bean
- public JpaTransactionManager transactionManager() {
- final JpaTransactionManager jpaTransactionManager = new JpaTransactionManager();
- jpaTransactionManager.setEntityManagerFactory(localContainerEntityManagerFactoryBean().getNativeEntityManagerFactory());
- return jpaTransactionManager;
- }
- @Configuration
- @Import({PersistenceConfiguration.class, UserConfiguration.class, SecurityConfiguration.class})
- @ComponentScan(basePackages = "org.xxx")
- @EnableWebMvc
- public class XxxProjectConfiguration {
- private static Logger LOG = Logger.getLogger(XxxProjectConfiguration.class);
- @Autowired
- private Environment env;
- @PostConstruct
- public void initApp() {
- LOG.debug("Looking for Spring profiles...");
- if (env.getActiveProfiles().length == 0) {
- LOG.info("No Spring profile configured, running with default configuration.");
- } else {
- for (String profile : env.getActiveProfiles()) {
- LOG.info("Detected Spring profile: {}" + profile);
- }
- }
- }
- @Autowired
- private UserConfiguration userConfiguration;
- // DAO
- @Bean
- public RelationshipDAO relationshipDAO() {
- return new RelationshipDAOImpl();
- }
- @Bean
- public RelationshipStatusDAO relationshipStatusDAO() {
- return new RelationshipStatusDAOImpl();
- }
- @Bean
- public MessageDAO messageDAO() {
- return new MessageDAOImpl();
- }
- // Services
- @Bean
- public UserServiceImpl userService() {
- return new UserServiceImpl(userConfiguration.userDAO(), relationshipDAO(), relationshipStatusDAO(), messageDAO());
- }
- }
- @Configuration
- @Import(PersistenceConfiguration.class)
- public class UserConfiguration {
- @Bean
- public UserDAO userDAO() {
- return new UserDAOImpl();
- }
- }
- @Transactional(propagation=Propagation.SUPPORTS)
- public class UserServiceImpl implements UserService, Serializable {
- private static final long serialVersionUID = 1L;
- private UserDAO userDAO;
- private RelationshipDAO relationshipDAO;
- private RelationshipStatusDAO relationshipStatusDAO;
- private MessageDAO messageDAO;
- public UserServiceImpl(final UserDAO userDAO, final RelationshipDAO relationshipDAO, final RelationshipStatusDAO relationshipStatusDAO, final MessageDAO messageDAO) {
- this.userDAO = userDAO;
- this.relationshipDAO = relationshipDAO;
- this.relationshipStatusDAO = relationshipStatusDAO;
- this.messageDAO = messageDAO;
- }
- @Override
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = UserServiceException.class)
- public RelationshipStatus wantsRelationship(final long fromUserId, final long toUserId) throws UserServiceException {
- try {
- final Relationship relationship = new Relationship(new Date());
- User fromUser = userDAO.get(fromUserId);
- User toUser = new User(toUserId);
- relationship.getUsers().add(fromUser);
- fromUser.getRelationships().add(relationship);
- relationship.getUsers().add(toUser);
- toUser.getRelationships().add(relationship);
- relationship.setWantsFromUserId(fromUserId);
- final Message message = new Message(fromUserId, "Hi ! My name is " + fromUser.getFirstName() + ", I want to meet you");
- relationship.getMessages().add(message);
- relationship.setStatus(new RelationshipStatus(Status.WANTS));
- relationshipDAO.persist(relationship);
- return relationship.getStatus();
- } catch (Exception e) {
- throw new UserServiceException(e);
- }
- }
- ...
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement