Olá, pessoal! No artigo de hoje vamos ver como integrar o Hibernate com Spring. Faremos um exemplo que irá persistir um dado no banco. Vou considerar que você já tem o Hibernate 3.x e o Spring 3.x na sua máquina.
Lets go…
Para o exemplo vou usar o MySQL, caso não tenha o driver de conexão, vá no site do fabricante e faça o download.
Desenvolvendo
Crie um java project, o meu será chamado de SpringHibernate.
Agora crie o bean:
@Entity
public class Spring {
@Id
@GeneratedValue
private Long id;
private String name;
//getters/setters omitidos
}
E agora vamos criar o DAO:
@Repository
public class SpringDAO {
/*
* esse é o cara que cuida de tudo, obter a transação, iniciar
* fechar e persistir
*/
private HibernateTemplate hibernateTemplate;
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
public long save(Spring spring){
long cod = (Long) hibernateTemplate.save(spring);
return cod;
}
}
Note: Observe que o método save retorna um valor do tipo long, que é o id do objeto inserido. Fiz isso somente para vermos qual foi o ID que o registro recebeu.
Feito isso, precisamos passar umas informações para o Spring, tudo será feito no xml de configuração do Srping framework que criamos, fiz comentário in line para facilitar o entendimento:
<!– DataSource –> <bean id=”dataSource” class=”org.springframework.jdbc.datasource.DriverManagerDataSource”> <property name=”driverClassName” value=”com.mysql.jdbc.Driver”/> <property name=”url” value=”jdbc:mysql://localhost/test”/> <property name=”username” value=”root”/> <property name=”password” value=”123456?/> </bean> <bean id=”hibernateTemplate” class=”org.springframework.orm.hibernate3.HibernateTemplate”> <property name=”sessionFactory” ref=”sessionFactory”/> </bean> <!– usando annotation para mapeamento do bean –> <bean id=”sessionFactory” class=”org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean”> <property name=”dataSource” ref=”dataSource” /> <property name=”annotatedClasses”> <!– passando a bean anotado –> <list> <value>br.com.camilolopes.classes.Spring</value> </list> </property> <!– configurações para o hibernate properties –> <property name=”hibernateProperties”> <props> <prop key=”hibernate.dialect”>org.hibernate.dialect.MySQLDialect</prop> <prop key=”hibernate.show_sql”>true</prop> <prop key=”hibernate.hbm2ddl.auto”>update</prop> </props> </property> </bean> <!– classe dao que faz a persistencia e tem uma referencia para o hiberanteTemplate –> <bean id=”springDAO”> <property name=”hibernateTemplate” ref=”hibernateTemplate”/> </bean>
Agora criamos uma classe main para testar:
public class Main {
public static void main(String[] args) {
// essa classe é o container
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
“conf/springconfiguration.xml”);
SpringDAO bean = (SpringDAO) applicationContext.getBean(“springDAO”);
Spring spring = new Spring();
spring.setName(“teste 1?);
System.out.println(bean.save(spring));
}}
É isso ai pessoal, vou ficando por aqui! Há uma forma ainda melhor e mais fácil de trabalhar com o Hibernate no Spring que é a partir da versão 3.x do framework Spring, quer veremos em um próximo artigo. Mas, a forma via template é bastante usada em versões pré-Spring 3.
Os projetos estão no meu GitHub: http://github.com/camilolopes
See ya!!





