Back-End

26 jun, 2013

Série Spring: Hibernate com Spring Framework

Publicidade

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.

01

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

}}

02

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