Bom...
Depois de passar a semana inteira lendo a respeito...
Tentei fazer um código com spring e hibernate.
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="mappingResources">
<list>
<value>Pessoa.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.FirebirdDialect</prop>
<prop key="hibernate.connection.driver_class">org.firebirdsql.jdbc.FBDriver</prop>
<prop key="hibernate.connection.url">jdbc:firebirdsql://localhost:3050/D:\\DADOS\\SGCP.FDB</prop>
<prop key="hibernate.connection.username">SYSDBA</prop>
<prop key="hibernate.connection.password">masterkey</prop>
</props>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<bean id="pessoaDao" class="hibernate.PessoaDao">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
</beans>
public class PessoaDao extends HibernateDaoSupport {
SessionFactory sessionFactory;
public PessoaDao() {
}
int save(Pessoa p) {
Session session = getSession(false);
session.saveOrUpdate(p);
return 1;
}
boolean delete(Pessoa p) {
Session session = getSession(false);
session.delete(p);
return true;
}
Pessoa load(int id_pessoa) {
Session session = getSession(false);
Query qr =
session.createQuery("from Pessoa where id_pessoa = :id_pessoa");
qr.setInteger("id_pessoa", id_pessoa);
return (Pessoa)qr.uniqueResult();
}
}
public class Teste {
public static void main(String[] args) {
Resource resource = new FileSystemResource("applicationContext.xml");
BeanFactory fa = new XmlBeanFactory(resource);
PessoaDao pd = (PessoaDao)fa.getBean("pessoaDao");
Pessoa p = new Pessoa();
p.setNome("Nome");
pd.save(p);
}
}
Exception in thread "main" java.lang.IllegalStateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
at org.springframework.orm.hibernate3.SessionFactoryUtils.doGetSession(SessionFactoryUtils.java:350)
at org.springframework.orm.hibernate3.SessionFactoryUtils.getSession(SessionFactoryUtils.java:200)
at org.springframework.orm.hibernate3.support.HibernateDaoSupport.getSession(HibernateDaoSupport.java:169)
at hibernate.PessoaDao.save(PessoaDao.java:15)
at hibernate.Teste.main(Teste.java:26).
EU imagino que existe alguma coisa que eu achei que seria automática... mas não foi...
Hibernate-3.2.7 e Spring-3.0.0M
É o ponta pé inicial que falta...