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