Spring + Hibernate. Concorrência

Boas

Ainda sou novo no Spring e hibernate e tou a fazer um web service restful. Tudo funciona bem, mas reparei que quando existe chamadas em simultâneo a coisa muda de figura. Por exemplo:

Se tivermos tres tabelas da base de dados:
Users - temos informação dos utilizadores
Grupos - temos informação dos grupos
GruposHasUser - associação dos utilizadores a grupos

Agora temo um método que o objectivo é receber um objecto com a informação e popular essas tabelas.

no método:

faço save do user
depois verifico se o grupo ja existe na BD, pois a descrição é UK.
e no final faço associação.

o problema é quando dois utilizadores chamam este método concorrentemente, pois ao nível da verificação do grupo não funciona como eu espera.

o meu método:

@transactional(readOnly=false)
public void create(User obj){


}

Em termos de sistema tenho a camada de @service a camada de @repository e a camada de @controler. Aqui parece-me tudo bem, talvez seja ao nível da configuração das transacções.

 <bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
   </bean>

<bean id="transactionManager"
    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>


<tx:annotation-driven />

Depois a sessionfactory é passada conforme o exemplo

<bean id="userDao" class="spring.dao.UserDAOImpl">
    <constructor-arg>
        <ref bean="sessionFactory" />
    </constructor-arg>
</bean>

É de referir que obtenho sempre na DAO a session com o metodo

sessionFactory.getCurrentSession();

Se puderem dar uma ajuda agradecia.

Cumprimentos