SSHÂóÌ(Îå)SpringÔËÓõ½HibernateÖÐ(¶þ)

2014-11-23 23:41:33 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 1
MySQLDialect true update thread

7¡¢ ʹÓÃjunit½øÐе¥Ôª²âÊÔ£¬´úÂëÈçÏÂËùʾ¡£

import junit.framework.TestCase;

public class UserManagerImplTest extends TestCase {

	public void testAddUser() {
		UserManager userManager = new UserManagerImpl();
		User user = new User();
		user.setName("ÕÅÈý");
		userManager.addUser(user);
	}

}


ÔÚÉÏÊö²Ù×÷Ó㬶ÔÊÂÎïµÄ¿ØÖƱ߽çÔÚÒµÎñÂß¼­²ã£¬ÒòΪÔÚUserManagerImplÖÐÎÒÃǵ÷ÓÃaddUser£¨£©ÕâÒ»·½·¨µÄͬʱҪ°ÑÕâÒ»²Ù×÷дÈëµ½ÈÕÖ¾ÖУ¬Ò²¾ÍÊǵ÷ÓÃÁËaddLog£¨£©·½·¨£¬¶ø¶ÔÓÚÀàµÄ·½·¨£¬Ò»·½·¨Ò»session£¬Ò»sessionÒ»ÊÂÎñ£¬ÄÇôÈç¹û¿ØÖÆÊÂÎñµÄÄØ£¿ÎÒÃÇÒªÖ´ÐпªÆôaddUser£¨£©ÊÂÎñͬʱÔÙ¿ªÆôaddLog£¨£©ÊÂÎñÂð£¿ÔÚÕâÀïÎÒÃÇûÓÐÔÙÓÃÒÔǰµÄopenSession·½·¨£¬Ñ¡ÔñÓõÄHibernateUtils.getSessionFactory().getCurrentSession();ͬʱÔÚhibernate.cfg.xmlÖжÔgetCurrentSession£¨£©½øÐÐÅäÖÃÈçÏ£¬ thread±íʾÔÚµ±Ç°Ïß³ÌÖУ¬Ó뵱ǰḬ̈߳ó¶¨ÕâÑùÖ´ÐÐaddUser£¨£©·½·¨ºÍaddLog£¨£©·½·¨Ê¹ÓõÄÊÇͬһ¸öÊÂÎñ¡£


ÄÇOpenSessionºÍgetCurrentSessionµÄÇø±ðÄØ£¿

1¡¢ openSession±ØÐë¹Ø±Õ£¬currentSessionÔÚÊÂÎñ½áÊøºó×Ô¶¯¹Ø±Õ¡£

2¡¢ openSessionûÓк͵±Ç°Ḭ̈߳󶨣¬currentSessionºÍµ±Ç°Ḭ̈߳󶨡£²¢ÇÒʹÓÃcurrentSessionÐèÒªÔÚÎÒÃǵÄhibernate.cfg.xmlÎļþÖнøÐÐÊÂÎñµÄÅäÖã¬ÊÇʹÓÃJdbcÊÂÎñ»¹ÊÇJTAÊÂÎñ¡£

hibernateºÍspring½áºÏʹÓÃ

ÎÒÃÇ´ÓÉÏÊöÀý×ÓÖз¢ÏÖ£¬hibernateµÄÊÂÎñÊǶÀÁ¢ÓÚhibernate¶ÔÊý¾Ý¿âµÄÔöɾ¸Ä²éµÄ£¬²¢ÇÒÊÂÎñ¿ØÖÆÔÚÎÒÃǵÄÒµÎñÂß¼­²ã£¬¶ÔÓÚ¶ÀÁ¢µÄ¶«Î÷£¬ÏñÊǺáÇÐÐÔÎÊÌ⣬×ÔÈ»Ïëµ½ÁËAOP£¬Êµ¼ÊÉÏSpringAOP·â×°Á˶ÔÊÂÎñµÄ¹ÜÀí£¬Ê¹ÓÃSpringAOPÎÒÃDz»ÔÙ¸ºÔðÈ¥¿ªÆôºÍ¹Ø±ÕÊÂÎñ¡£

ÏÂÃæÓÃSpringAOPÀ´ºÍhibernate½áºÏ¡£

µ±È»Ò²Òªµ¼ÈëSpringÏà¹Øjar£¬Ç°ÆªÎÄÕÂÒѾ­ÐðÊöÁË¡£

¶ÔÓÚÊÂÎñ¹ÜÀí¾ÍÊÇÒ»¸öºáÇÐÐÔÎÊÌ⣬°ÑÊÂÎñ¹ÜÀíÄ£¿é»¯¾ÍÊÇÎÒÃǵÄaspect£¬È»ºóÔÙÅäÖÃÎļþÖнøÐÐÅäÖã¬ÎÒÃÇ¿ÉÒÔ°ÑÊÂÎñµ¥¶À·Åµ½Ò»¸öÅäÖÃÎļþÖС£

1¡¢´úÂëÈçÏ£¬applicationContext-common.xmlÎļþ¡£

  

	
   
	
    
     
     
      classpath:hibernate.cfg.xml
      
     
   
	
	
   
	
    
     
      
     
   


   	

    
     
     
   


    
     
      
      
      
      
     
   

  


Ê×ÏÈÊÇÅäÖõÄÊÇsessionFactory£¬ÈÃspringÄõ½hibernateµÄsessionFactory£¬ÒÔ±ã¶ÔhibernateÊÂÎñ¿ØÖÆ£¬Í¨¹ýsessionFactory²úÉúsessionÔÙ·ÃÎÊ¡£ÕâÑù¾Í°Ñ°ÑhibernateµÄsessionFactory×¢Èëµ½SpringÖÐÁË¡£Í¨¹ý ±êÇ©£¬¸æËßSpringHibernateµÄÅäÖÃÎļþÔÚÄÄÀÒÔ±ãspring¿ÉÒÔ¶ÁÈ¡hibernateµÄÅäÖÃÎļþ¡£

Æä´ÎÊÇÅäÖÃÊÂÎñ¹ÜÀíÆ÷£¬°ÑÎÒÃǵÄsessionFactory×¢Èë¸øÊÂÎñ¹ÜÀíÆ÷£¬ÈÃÊÂÎñ¹ÜÀíÆ÷¹ÜÀíÊÂÎñ¡£

Æä´Î£¬µ½µ×ÊÇÄÄЩÀàÄÄЩ·½·¨£¬¿ªÊ¼Ö´ÐеÄʱºòÖ´ÐÐÊÂÎñ£¬

Æä´Î£¬ÅäÖÃAOP£¬expression="execution(*com.bjpowernode.usermgr.manager.*.*(..))"£¬µ½µ×ÊÇÄÄЩÀཻ¸øspringÍê³ÉÊÂÎñ¹ÜÀí£¿ÎÒÃÇÓ¦ÓÃÔÚËùÓеÄmanager°üÖеÄËùÓз½·¨ÉÏ£¬managerËùÓÐÀàËùÓз½·¨È«²¿²ÎÓëÊÂÎñµÄÔËÐС£ÄÇÔÚʲôµØ·½´¥·¢¿ªÆôÊÂÎñ£¿

ÔٴΣ¬¶¨ÒåÒ»¸öAdvice£¬ÅäÖÃÊÂÎñµÄ´«²¥ÌØÐÔ£¬ÀýÈçaddUser£¨£©Öе÷ÓÃaddLog£¨£©·½·¨£¬ÊÇÔÚͬһ¸öÊÂÎñ»¹ÊDz»ÔÚͬһ¸öÊÂÎñ¡£ÒÔadd¿ªÍ·£¬del¿ªÍ·£¬modify¿ªÍ·ÒÔ¼°ÆäËû£¬ÎÒÃÇÅäÖõÄÊÂÎñ´«²¥ÌØÐÔΪpropagation="REQUIRED"£¬ÕâÑùÔÚÒ»¸ö·½·¨Öе÷ÓÃÁíÒ»¸ö·½·¨ËûÃǹ«¹²Ò»¸öÏ̡߳£

2¡¢ÈÃUserManagerImpl¼Ì³ÐspringÌṩµÄ¶ÔhibernateDaoÖ§³ÖÀà¡£

HibernateDaoSupport£¬ÕâÑù¼Ì³ÐÖ®ºóÎÒÃǾÍÄÜÄõ½session£¬ÆäʵҲ¾ÍÊÇhibernateÖеÄsession£¬Ö»²»¹ýspringΪÎÒÃÇ·â×°ÁË¡£ÎÒÃÇ¿ÉÒÔÕâÑùÄõ½sesion£ºThis.getSession().save(user);»òÕßʹÓÃspring·â×°ºÃµÄ¶ÔÏó£ºThis.getHibernateTemplate().save(user);ÕâÑù¶¼·â×°µ½ÀïÃæÁË£¬ÎÒÃDz»¹ÜÀíÊÂÎñµÄ¿ªÆôºÍ¹Ø±Õ¡£

֮ǰÔÚÎÒÃǵÄUserManagerImplÖÐʹÓÃÁËLogManagerImplʵÀý£¬Õâ´ÎÎÒÃÇ¿ÉÒÔʹÓÃSpringµÄIOCÈÝÆ÷£¬°ÑËûÃÇÖ®¼äµÄÒÀÀµ¹ØÏµ×¢Èëµ½SpringÖУ¬ÕâÑù¾Í¿´²»µ½ÊµÀý£¬Ãæ¶Ô½Ó¿Ú±à³Ì£¬½øÐÐÁ˽âñî¡£

½Ó¿Ú²»±ä£¬UserManagerImpl.java´úÂëÈçÏÂËùʾ¡£

public class UserManagerImpl extends HibernateDaoSupport implements UserManager {

	
	private LogManager logManager;
	
	public void setLogManager(LogManager logManager)
	{
		this.logManager = logManager;
	}

		
	@Override
	public void addUser(User user)throws Exception {
		
		//this.getSession().save(user);
				//»òÕßÓÃ.
				this.getHibernateTemplate().save(user);
				Log log = new Log();
				log.setType("²Ù×÷ÈÕÖ¾");
				log.setTime(new Date());
				log.setDetail("xxx");
				
				//LogManager logManager = new LogManagerImpl();
				//Ìí¼ÓÈÕÖ¾.
				logManager.addLog(log);				
				//ÔËÐÐÆÚµÄÒì³£,»á»Ø¹ö. ²¢ÇÒÊÇËûµÄ×ÓÀàÒ²»á»Ø¹ö.
				//throw new RuntimeException();
				
				//throw new Exception();

		
	}
}


LogManagerImpl.java ´úÂëÈçÏÂËùʾ¡£

public class LogManagerImpl extends HibernateDaoSupport implem