Olá, vou tentar explicar de uma forma clara o que estou querendo fazer, venho estudando o spring a pouco tempo e comecei a fazer a integração dele com o hibernate, peguei alguns exemplos prontos e fui modificando até então tudo certo, extraindo o maximo de informações possiveis para dar inicio a o desenvolvimento de uma aplicação maior. O fluxo de dados da aplicação que esta com problema é o seguinte:
View(Flex) chama o metodo getList do controlador(CargoController) o controlador intancia o DAO (CargoHibernateDao) e o mesmo tem o método em questão. Bom eu deixei o meu controlador fora do Spring pois existe o mapeamento do web.xml para fazer em fim, não queria que ele fizesse parte do Spring então separei a camada de controler. O problema está sendo no medodo getHibernateTemplate, chega de lenga lenga vou colar pra você os arquivos. Chegou a um ponto que eu não sei para aonde prosseguir. Segue abaixo:
ARQUIVO - controlador(CargoController)
public class CargoController {
CargoHibernateDao dao = new CargoHibernateDao();
public Cargo save(Cargo p_cargo) throws Exception {
return dao.save(p_cargo);
}
public void remove(Cargo p_cargo) throws Exception {
dao.remove(p_cargo);
}
public Cargo findById(Cargo p_cargo) throws Exception {
return dao.findById(p_cargo);
}
public List<Cargo> getList() throws Exception {
return dao.getList();
}
}
ARQUIVO - DAO(CargoHibernateDao )
public class CargoHibernateDao extends HibernateDaoSupport implements ICrud {
public Cargo save(Cargo p_cargo) {
getHibernateTemplate().saveOrUpdate(p_cargo);
return p_cargo;
}
public void remove(Cargo p_cargo) {
getHibernateTemplate().delete(p_cargo);
}
public Cargo findById(Cargo p_cargo) {
long id = p_cargo.getIdCargo();
p_cargo = (Cargo) getHibernateTemplate().get(Cargo.class, p_cargo.getIdCargo());
if (p_cargo == null) {
return null;
}
return p_cargo;
}
@SuppressWarnings("unchecked")
public List<Cargo> getList() {
try {
return (List<Cargo>) getHibernateTemplate().loadAll(Cargo.class);
} catch (Exception e) {
System.out.println("Não foi possível listar."+e.getMessage());
}
return null;
}
}
ARQUIVO - INTERFACE(ICrud)
public interface ICrud {
public Cargo save(Cargo p_cargo);
public void remove(Cargo p_cargo);
public Cargo findById(Cargo p_cargo);
public List<Cargo> getList();
}
ARQUIVO - APLICATIONCONTEXT
<?xml version=“1.0” encoding=“UTF-8”?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
default-lazy-init=“false”>
<!–
//////////////////////////////////////
Integração do Spring com o Hibernate
//////////////////////////////////////
–>
<!--
Carregamento do Arquivo de Configuracoes do JDBC
-->
<context:property-placeholder location="classpath:resources/jdbc.properties" />
<!--
Configuracao do DataSource
-->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>${jdbc.driverClassName}</value>
</property>
<property name="url">
<value>${jdbc.url}</value>
</property>
<property name="username">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
</bean>
<!--
Hibernate SessionFactory
-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="annotatedClasses">
<list>
<value>model.entity.Cargo</value>
</list>
</property>
<!-- Configuracoes do Hibernate -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect"> org.hibernate.dialect.MySQLInnoDBDialect </prop>
<prop key="hibernate.show_sql">true</prop>
<!--
Atualizar o Banco de dados de acordo com os arquivos de mapeamentos.
<prop key="hibernate.hbm2ddl.auto">update</prop>
-->
</props>
</property>
<property name="eventListeners">
<map>
<entry key="merge">
<bean
class="org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener" />
</entry>
</map>
</property>
</bean>
<bean id="ICrud" class="model.repository.hibernate.CargoHibernateDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!--
Transaction Manager
-->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!-- Habilita os Services para serem transicionais via a Annotation @Transactional -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- ============================== AOP DEFINITIONS ================================ -->
<!-- ========================= BUSINESS OBJECT DEFINITIONS ========================= -->
<!--
Activates various annotations to be detected in bean classes:
Spring's @Required and @Autowired, as well as JSR 250's @Resource.
-->
<context:annotation-config />
</beans>
PS: Essa bagunça de arquitetura será corrigida quando eu for montar o projeto, so preciso montar uma pequena estrutura para entender melhor como funciona, é só a nivel de aprendizado. Obrigado