Série Spring: Hibernate com Spring Framework

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.

springhibernateproject

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));

}}

springhibernateresultdb

É 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!!

Deixe um comentário

O seu endereço de e-mail não será publicado.