区别
				
				
						
								
								
								
						
				
		
		
				
						getHibernateTemplate().getSessionFactory().openSession()
				
		
		
				
						getHibernateTemplate().getSessionFactory().getCurrentSession()
				
		
		
				
						 
				
		
		
				
						 
				
		
		
				getCurrentSession ()   
				使用当前的
				session
		
		
				openSession()         
				重新建立一个新的
				session 
		
		
				
						 
				
		
		
				-------------------------
		
		
				SessionFactory.getCurrentSession() 
				是
				 Hibernate 
				应用获取
				 Session 
				的常用方法。在调用该方法时,
				Hibernate 
				会从
				 interface CurrentSessionContext 
				获取当前的
				 Session
				,这是
				Hibernate 
				在不同组件中传递
				 Session 
				的方法。
		
		
				
						 
				
		
		
				CurrentSessionContext 
				有三个实现,分别是
				 ThreadLocalSessionContext
				、
				JTASessionContext 
				和
				 ManagedSessionContext
				。
		
		
				
						 
				
		
		
				ThreadLocalSessionContext 
				将
				 Session 
				与当前线程绑定,是使用较多的一种方案;
		
		
				JTASessionContext 
				将
				 Session 
				与
				 JTA 
				事务绑定,在
				 JTA 
				环境中使用;
		
		
				
						 
				
		
		
				ManagedSessionContext 
				使应用可以通过
				 bind() 
				和
				 unbind() 
				方法控制
				 Session 
				的绑定,主要在有
				 Conversation 
				的应用中使用(如果使用
				 ManagedSessionContext
				,开发人员要做的事情还是很多的)。
		
		
				
						 
				
		
		
				CurrentSessionContext 
				实现的选择可以通过
				 hibernate.current_session_context_class 
				来配置。
		
		
				
						 
				
		
		
				另一种更常见的创建
				 Session 
				的方法是
				 openSession()
				。
		
		
				
						 
				
		
		
				
						 
				
		
		
				
						openSession() 
				
				
						与
				
				
						 getCurrentSession() 
				
				
						有何不同和关联呢?
				
				
						
								
								
						
				
		
		
				
						 
				
		
		
				在
				 SessionFactory 
				启动的时候,
				Hibernate 
				会根据配置创建相应的
				 CurrentSessionContext
				,在
				 getCurrentSession() 
				被调用的时候,实际被执行的方法是
				 CurrentSessionContext.currentSession() 
				。在
				 currentSession() 
				执行时,如果当前
				 Session 
				为空,
				currentSession 
				会调用
				 SessionFactory 
				的
				 openSession
				。所以
				 getCurrentSession() 
				对于
				 Java EE 
				来说是更好的获取
				 Session 
				的方法。
		
		
				
						 
				
		
		
				再说
				 ManagedSessionContext
				,它提供了更灵活的绑定
				 Session 
				的方式,但是使用起来去不简单。
		
		
				在
				 Hibernate 
				的
				 CaveatEmptor 
				实例中有关于使用
				 ManagedSessionContext 
				的例子,但更好的选择是使用
				 Seam Framework
				。