Advertisement
Guest User

Untitled

a guest
Apr 7th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.06 KB | None | 0 0
  1. @Transactional
  2. @Service
  3. private GroupNotesServiceImpl implements GroupNotesService{
  4. @Override
  5. public String editNoteWithMap(Map<String, Object> noteMap) {
  6. Person person = this.personService.getCurrentlyAuthenticatedUser();
  7. if ((noteMap != null) && (!noteMap.isEmpty())) {
  8. int noteId = (Integer) noteMap.get("id");
  9. // How to ensure below object is not stale.
  10. GroupNotes databaseNoteObject = this.groupNotesDAO.getGroupNoteById(noteId);
  11. { // Process the Map }
  12. // Update the object as below :
  13. this.groupNotesDAO.editGroupNote(databaseNoteObject, databaseNoteObject.getOwnedSectionId());
  14.  
  15. }
  16.  
  17. @Repository
  18. @Transactional
  19. public class GroupNotesDAOImpl implements GroupNotesDAO {
  20.  
  21. private final SessionFactory sessionFactory;
  22.  
  23. @Override
  24. public GroupNotes editGroupNote(GroupNotes mnotes, int msectionid) {
  25. Session session = this.sessionFactory.getCurrentSession();
  26. session.flush();
  27. // I had the lock before, but it started messing around for other updates of associated objects. That was caused by getById also being under lock.
  28. // session.buildLockRequest(new LockOptions(LockMode.PESSIMISTIC_WRITE)).lock(mnotes);
  29. GroupSection groupSection = (GroupSection) session.get(GroupSection.class, msectionid);
  30. groupSection.getSectionsnotes().add(mnotes);
  31. mnotes.setOwnednotes(groupSection);
  32. GroupNotes savedObject = (GroupNotes) session.merge(mnotes);
  33. session.merge(groupSection);
  34. session.flush();
  35. return savedObject;
  36.  
  37. } catch (Exception e) {
  38. e.printStackTrace();
  39. }
  40. return null;
  41. }
  42.  
  43. @Override
  44. public GroupNotes getGroupNoteById(int id) {
  45. Session session = this.sessionFactory.getCurrentSession();
  46. session.flush();
  47. return (GroupNotes) session.get(GroupNotes.class, id);
  48. }
  49. }
  50.  
  51. <context:component-scan base-package="com.tooltank.spring">
  52. <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
  53. </context:component-scan>
  54.  
  55. <context:property-placeholder location="classpath:application.properties"/>
  56.  
  57. <beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
  58. destroy-method="close">
  59. <beans:property name="driverClassName" value="org.postgresql.Driver"/>
  60. <beans:property name="url"
  61. value="jdbc:postgresql://localhost:5432/DBNAME"/>
  62. <beans:property name="username" value="USERNAME"/>
  63. <beans:property name="password" value="PASSWORD"/>
  64. <beans:property name="removeAbandoned" value="true"/>
  65. <beans:property name="removeAbandonedTimeout" value="20"/>
  66. <beans:property name="defaultAutoCommit" value="false"/>
  67. </beans:bean>
  68.  
  69. <!-- Hibernate 4 SessionFactory Bean definition -->
  70. <beans:bean id="hibernate4AnnotatedSessionFactory"
  71. class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  72. <beans:property name="dataSource" ref="dataSource"/>
  73. <beans:property name="packagesToScan" value="com.tooltank.spring.model"/>
  74. <beans:property name="hibernateProperties">
  75. <beans:props>
  76. <beans:prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQL9Dialect</beans:prop>
  77. <beans:prop key="hibernate.show_sql">false</beans:prop>
  78. <!-- <beans:prop key="hibernate.jdbc.batch_size">1000</beans:prop>-->
  79. <beans:prop key="hibernate.hbm2ddl.auto">update</beans:prop>
  80. <beans:prop key="cache.use_second_level_cache">true</beans:prop>
  81. <beans:prop key="cache.use_query_cache">true</beans:prop>
  82. <beans:prop key="hibernate.order_updates">true</beans:prop>
  83. <beans:prop key="show_sql">false</beans:prop>
  84. </beans:props>
  85. </beans:property>
  86.  
  87. </beans:bean>
  88.  
  89. <beans:bean id="LoginServiceImpl" class="com.tooltank.spring.service.LoginServiceImpl"/>
  90.  
  91.  
  92. <task:annotation-driven executor="myExecutor"/>
  93.  
  94. <task:executor id="myExecutor" pool-size="7-42" queue-capacity="11"/>
  95.  
  96.  
  97. <tx:annotation-driven transaction-manager="transactionManager"/>
  98.  
  99. <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
  100. <beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory"/>
  101. </beans:bean>
  102.  
  103. <cache:annotation-driven/>
  104.  
  105. <beans:bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
  106. <beans:property name="caches">
  107. <beans:set>
  108. <beans:bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"
  109. p:name="person"/>
  110. </beans:set>
  111. </beans:property>
  112. </beans:bean>
  113.  
  114. <!-- AppConfiguration for Spring-Data-Redis -->
  115. <beans:bean id="jedisConnFactory"
  116. class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:usePool="true"/>
  117.  
  118. <beans:bean id="redisSaveTemplate" class="org.springframework.data.redis.core.RedisTemplate"
  119. p:connectionFactory-ref="jedisConnFactory"/>
  120.  
  121. <beans:bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
  122. p:connectionFactory-ref="jedisConnFactory"/>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement