olá pessoal,
No post de hoje vamos ver como integrar o Hibernate com Spring, faremos um exemplo muito simples 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…
Starting
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 dos nossos posts a seguir. Mas, a forma via template é bastante usada em versões pré-Spring 3.
Os projetos
GitHub: http://github.com/camilolopes
see ya!!