Hibernate Annotations con Spring
Para utilizar las anotaciones de Hibernate junto con Spring tenemos que reemplazar en el archivo application-hibernate.xml la clase org.springframework.orm.hibernate3.LocalSessionFactoryBean por org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean:
Ejemplo de uso
<bean id="sessionFactory" 
 class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
 <property name="dataSource" ref="dataSource" />   
 <property name="annotatedClasses">
    <list>
      <value>com.app.domain.Abonado</value>              
      <value>com.app.domain.Cliente</value>              
    </list>
  </property>
<property name="hibernateProperties">
 <props>      
    <prop key="hibernate.show_sql">true</prop>     
 </props>
</property>      
</bean> 
Querys con Spring
@Entity 
@Table (name="cliente") 
//DECLARO LOS QUERIES 
@NamedQueries(
 {@NamedQuery(name="buscarPorIdCliente",
    query="select a from Cliente a where a.idCliente= ?"),
 @NamedQuery(name="buscarPorIdSucursal", 
  query="select a from miTabla a where a.idSucursal= ?")})
public class Cliente{  
   @Id 
   @Column (name="COD_CLIENTE")
   private Long id;
   @Column (name="COD_SUCURSAL")    
   private String idSucursal;
   .................
}
DAO
public class ClienteDaoImpl extends  HibernateDaoSupport implements ClienteDao {
   public Collection buscarPorIdCliente(String idCliente) {
      return  getHibernateTemplate().
      findByNamedQuery("buscarPorIdCliente", idCliente);
   }
   public Collection buscarPorIdSucursal(String idSucursal) {
          return  getHibernateTemplate().
                   findByNamedQuery("buscarPorIdSucursal", idSucursal);     
   }
} 
Mapeo de Recursos y Mapeo de Clases Anotadas
En el archivo de configuración application-hibernate.xml se puede mezclar el mapeo a archivos xml y a clases anotadas sin problemas. Esto nos será muy útil al momento de "migrar" una aplicación de mapeo en archivos xml a clases anotadas, pudiendo hacer la migración en forma progresiva.
La clase del SessionFactory que se debe utilizar en estos casos tambien es:
org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean
<bean id="sessionFactory" 
 class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
 <property name="dataSource" ref="dataSource" />   
 <property name="annotatedClasses">
    <list>
      <value>com.app.domain.Cliente</value>              
    </list>
  </property>
 <property name="mappingResources">
    <list>
      <value>com/app/domain/Cliente</value>              
    </list>
  </property>
<property name="hibernateProperties">
 <props>      
    <prop key="hibernate.show_sql">true</prop>     
 </props>
</property>      
</bean> 
Noten que mientras los mapeos por archivos XML DEBEN nombrarse con / (barra) entre los directorios, las clases anotadas DEBEN nombrarse con . (punto).