Configurar transaction do hibernate com Spring Security

Olá pessoa , estou tentando implementar o framework spring security , mas meu filter de conexão do hibernate não achar a transaction , toda vez que tento salvar o cadastro de um usuário da esse erro

org.hibernate.HibernateException: save is not valid without active transaction

o arquivo : hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.datasource">java:comp/env/jdbc/FinanceiroDB</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <property name="hibernate.hbm2ddl.auto">update</property>
    
    <mapping class="usuario.Usuario"/>
  </session-factory>
</hibernate-configuration>

arquivo : applicationContext-security.xml

<?xml version="1.0" encoding="UTF-8"?>
<b:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:b="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">
	<http>

		<intercept-url pattern="/admin/**" access="ROLE_ADMINISTRADOR" />
		<intercept-url pattern="/restrito/**" access="ROLE_USUARIO" />
		<form-login login-page="/publico/login.jsf"
			always-use-default-target="true" default-target-url="/restrito/principal.jsf"
			authentication-failure-url="/publico/login.jsf?login_error=1" />
		<logout/>
		<remember-me />
	</http>

	<authentication-manager>
		<authentication-provider>
			<jdbc-user-service data-source-ref="financeiroDataSource"
				authorities-by-username-query="SELECT u.login, p.permissao 
											 FROM usuario u, usuario_permissao p 
											WHERE u.codigo = p.usuario 
											  AND u.login = ?"
				users-by-username-query="SELECT login, senha, ativo 
									   FROM usuario 
									  WHERE login = ?" />
		</authentication-provider>
	</authentication-manager>
</b:beans>

	<bean id="financeiroDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiName">
			<value>java:comp/env/jdbc/FinanceiroDB</value>
		</property>
	</bean> 	
</beans>

arquivo : applicationContext-security.xml

arquivos : web.xml
<?xml version="1.0" encoding="UTF-8"?>

    <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
     http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">

        <!-- Faces Servlet -->
        <context-param>
            <param-name>javax.faces.PROJECT_STAGE</param-name>
            <param-value>Development</param-value>
        </context-param>

        <servlet>
            <servlet-name>Faces Servlet</servlet-name>
            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
            <load-on-startup>1</load-on-startup>    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

	<bean id="financeiroDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiName">
			<value>java:comp/env/jdbc/FinanceiroDB</value>
		</property>
	</bean> 	
</beans>
        </servlet>

        <servlet-mapping>
            <servlet-name>Faces Servlet</servlet-name>
            <url-pattern>/faces/*</url-pattern>
        </servlet-mapping>

        <session-config>
            <session-timeout>30</session-timeout>
        </session-config>
        <welcome-file-list>
            <welcome-file>index.html</welcome-file>
            <welcome-file>index.htm</welcome-file>
            <welcome-file>index.jsp</welcome-file>
            <welcome-file>default.html</welcome-file>
            <welcome-file>default.htm</welcome-file>
            <welcome-file>default.jsp</welcome-file>
        </welcome-file-list>

        <!-- Fim Faces Servlet -->
        <!-- Configurações SPRING SECURITY -->
        <context-param> 
            <param-name>contextConfigLocation</param-name> 
            <param-value>
                /WEB-INF/applicationContext.xml
                /WEB-INF/applicationContext-security.xml
            </param-value> 
        </context-param> 
        <listener> 
            <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> 
        </listener> 
        <filter> 
            <filter-name>springSecurityFilterChain</filter-name> 
            <filter-class> org.springframework.web.filter.DelegatingFilterProxy </filter-class> 
        </filter> 
        <filter-mapping> 
            <filter-name>springSecurityFilterChain</filter-name> 
            <url-pattern>/*</url-pattern> 
        </filter-mapping>
        <!-- Fim Configurações SPRING SECURITY --> 
        
    </web-app>

Da uma força ai pessoal