Pessoal,
Este post não trata-se de uma dúvida, e sim de uma simples aplicação de exemplo de como inicar com essas novas tecnologias. Tomei a iniciativa de disponibilizar isso para ajudar a todos que estão iniciando com esses frameworks e evitar ficar correndo a Internet para aprender algo que eu considerei muito simples (após quebrar um pouco a cabeça, é claro).
Inicialmente eu fiz o download do Spring e suas dependências (clique aqui para fazer o download) e depois criei um novo Dynamic Web Project no Eclipse com o nome TesteSpring. O banco que eu utilizei para o teste foi o PostgreSQL versão 8.1.
A estrutura do projeto ficou assim:
TesteSpring
|--src // Onde ficarão os fontes
|--xml // Onde ficarão os arquivos XML do Spring
|--build
|--classes // Onde ficarão os .class
|--WebContent
|--WEB-INF
|--lib // Onde ficarão as libs do projeto
Seguindo essa estrutura eu criei um pacote: br.com.teste.dto. Dentro deste eu criei duas classes: Medico e Teste.
Aqui vai a classe Medico:[code]package br.com.teste.dto;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Medico {
@Id
@Column(name = "num_crm", nullable = false, length = 8)
private Integer numeroCrm;
@Column(name = "nom_medico", length = 100)
private String nome;
@Column(name = "cpf_medico", length = 11)
private String cpf;
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Integer getNumeroCrm() {
return numeroCrm;
}
public void setNumeroCrm(Integer numeroCrm) {
this.numeroCrm = numeroCrm;
}
}[/code]
E aqui a classe Teste:[code]package br.com.teste.dto;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.HibernateTemplate;
public class Teste {
private HibernateTemplate hibernateTemplate;
private Medico medico;
public static void main(String[] args) {
try {
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "hello.xml" } );
BeanFactory factory = ( BeanFactory ) context;
Teste teste = ( Teste ) factory.getBean( "teste" );
teste.updateMedico( teste.getMedico() );
System.out.println( teste.getMedico().getNumeroCrm() );
System.out.println( teste.getMedico().getNome() );
System.out.println( teste.getMedico().getCpf() );
} catch (Exception ex) {
System.out.println( ex.getMessage() );
}
}
/**
- Insere ou atualiza um registr de um médico.
-
@param medico
*/
public void updateMedico(Medico medico) {
this.getHibernateTemplate().saveOrUpdate(medico);
}
/**
-
@return the hibernateTemplate
*/
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
/**
-
@param hibernateTemplate the hibernateTemplate to set
*/
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
/**
-
@return the medico
*/
public Medico getMedico() {
return medico;
}
/**
-
@param medico the medico to set
*/
public void setMedico(Medico medico) {
this.medico = medico;
}
}[/code]
Antes de tudo eu criei uma tabela com o nome medico e os campos num_crm (numeric( 8 )), nom_medico (varchar( 100 )) e cpf_medico (varchar( 11 )) e criei, também, um arquivo XML com o nome de hello.xml e coloquei na pasta xml do projeto.
Segue abaixo o conteúdo de hello.xml:[code]<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation=“http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd”>
<bean id=“dataSource” class=“org.springframework.jdbc.datasource.DriverManagerDataSource”>
<property name=“driverClassName”>
<value>org.postgresql.Driver</value>
</property>
<property name=“url”>
<value>jdbc:postgresql://localhost:5432/postgres</value>
</property>
<property name=“username”>
<value>postgres</value>
</property>
<property name=“password”>
<value>fbma110883</value>
</property>
</bean>
<bean id=“sessionFactory” class=“org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean”>
<property name=“dataSource” ref=“dataSource”/>
<property name=“annotatedClasses”>
<value>br.com.teste.dto.Medico</value>
</property>
<property name=“hibernateProperties”>
<props>
<prop key=“hibernate.dialect”>org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key=“hibernate.show_sql”>true</prop>
<prop key=“hibernate.format_sql”>true</prop>
<prop key=“hibernate.use_sql_comments”>true</prop>
<prop key=“hibernate.generate_statistics”>true</prop>
</props>
</property>
</bean>
<bean id=“hibernateTemplate” class=“org.springframework.orm.hibernate3.HibernateTemplate”>
<property name=“sessionFactory” ref=“sessionFactory” />
</bean>
<tx:annotation-driven transaction-manager=“transactionManager”/>
<bean id=“transactionManager” class=“org.springframework.orm.hibernate3.HibernateTransactionManager”>
<property name=“sessionFactory” ref=“sessionFactory”/>
</bean>
<bean id=“teste” class=“br.com.teste.dto.Teste”>
<property name=“hibernateTemplate” ref=“hibernateTemplate” />
<property name=“medico” ref=“medico” />
</bean>
<bean id=“medico” class=“br.com.teste.dto.Medico”>
<property name=“numeroCrm” value=“4811” />
<property name=“nome” value=“Dra. Edinalva Barreto” />
<property name=“cpf” value=“07356250597” />
</bean>
</beans>[/code]
As lib que eu copiei para a pasta lib do meu projeto foram:
:arrow: commons-logging.jar (spring-framework-2.0/lib/jakarta-commons)
:arrow: ejb3-persistence.jar
:arrow: hibernate3.jar (spring-framework-2.0/lib/hibernate)
:arrow: hibernate-annotations.jar (spring-framework-2.0/lib/hibernate)
:arrow: spring.jar (spring-framework-2.0/dist)
:arrow: postgresql-8.2-504.jdbc3.jar
:arrow: dom4j-1.6.1.jar (spring-framework-2.0/lib/dom4j)
:arrow: jta.jar (spring-framework-2.0/lib/jta)
:arrow: commons-collection.jar (spring-framework-2.0/lib/jakarta-commons)
:arrow: ehcache-1.2.3.jar (spring-framework-2.0/lib/ehcache)
:arrow: cglib-nodep-2.1_3.jar (spring-framework-2.0/lib/cglib)
Bem pessoal, espero ter ajudado a alguns a solucionar muitos dos probleminhas que surgem no início dos estudos de um novo framework.
Abraço a todos.