Você está na página 1de 9

11/09/2010 TUTORIAL JAVA + FLEX NA PRÁTICA 1…

TUTORIAL JAVA + FLEX NA PRÁTICA 1/6


By jandersonfc on 14/05/2009

Antes de mais nada gostaria de agradecer as visitas no blog, quando visitar sinta-se a vontade para
fazer seu comentário, ok!

Este Tutorial vai ser para os leitores com um nível mais avançado (ao contrário do que tenho
procurado atender no momento aqui no blog), então vai ser muito código, alguns Links e pouca teoria, peço
desculpas para os iniciantes, mais pensa pelo lado positivo, se estudar tudo que vai ser mostrado e correr
atrás ( o que não entender procurar no Google) você vai com certeza aprender e muito.

BACKEND – JAVA + HIBERNATE ANNOTATIONS + SPRING ANNOTATIONS + BLAZEDS + MYSQL

Essa estrutura que vou usar no backend já é muito conhecida então vou mostrar o código sem muita
explicação ( sempre utilizaremos como IDE o ECLIPSE).

Existe um excelente exemplo feito pelo Rodrigo Fraga em seu blog, então para não reescrever a roda, antes
de ler este artigo leia esses artigos do Rodrigo Fraga, ok!

http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-
opensource-para-sistemas-web-parte-1/

http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-
opensource-para-sistemas-web-parte-2-final/

bem, então vamos começar (não vou mostrar as dependências, espero que você saiba que precisa dos jars do
Spring, Hibernate, Blazeds, Mysql Jdbc, que vc precisa de um Web Conteiner Tomcat ou um Servidor de
Aplicação como JBoos instalado e configurado, o mesmo com o Mysql, o eclipse e os plugins necessários... Se
não sabe pesquise folgado, se não você nunca vai ser um bom programador ).

COMECANDO O PROJETO

Vamos Criar o Nosso Projeto em Java ( Um Dynamic Web Project ) com o nome CrudJava, na imagem abaixo
se trata de um simples Crud(Cadastro de Estado). O nosso projeto todo codificado vai ficar assim:

jandersonfc.com/tutorial-java-flex-na-… 1/9
11/09/2010 TUTORIAL JAVA + FLEX NA PRÁTICA 1…

Como podem perceber o Java é responsável por 3 camadas da minha arquitetura, Negócio (Business),
Dados (Data) e Infraestrutura (Infrastructure).

Agora vou colocando os códigos de cada classe abaixo e o que for necessário vou explicando:

CAMADA DE NEGÓCIO

Minha entidade Estado.java

PLAIN TEXT
JAVA:
1. package com.saberprogramar.business.entitys;
2. import javax.persistence.Entity;
3. import javax.persistence.GeneratedValue;
4. import javax.persistence.GenerationType;
5. import javax.persistence.Id;
6. import javax.persistence.Table;
7. @Entity
8. @Table(name="estado")
9. public class Estado {
10. @Id @GeneratedValue(strategy = GenerationType.AUTO)
11. private long idEstado;
12. private String nome;
13. private String uf;
14. //…. Getters e Setters

jandersonfc.com/tutorial-java-flex-na-… 2/9
11/09/2010 TUTORIAL JAVA + FLEX NA PRÁTICA 1…
15. }

Meu repositório EstadoRepository.java

PLAIN TEXT
JAVA:
1. package com.saberprogramar.business.repositorys;
2. import java.util.List;
3. import com.saberprogramar.business.entitys.Estado;
4. public interface EstadoRepository {
5. public void save(Estado estado);
6. public void remove(Estado estado);
7. public List<estado> findAll();
8. public List<estado> findByName(String nome);
9. }

Meu Serviço EstadoService.java

PLAIN TEXT
JAVA:
1. package com.saberprogramar.business.services;
2. import java.util.List;
3. import org.springframework.beans.factory.annotation.Autowi
4. import org.springframework.stereotype.Service;
5. import com.saberprogramar.business.entitys.Estado;
6. import com.saberprogramar.business.repositorys.EstadoRepos
7. @Service(value="EstadoService")
8. public class EstadoService {
9. EstadoRepository estadoRepository;
10. @Autowired
11. public void setEstadoRepository(EstadoRepository estado
12. this.estadoRepository = estadoRepository;
13. }
14. public void save(Estado estado){
15. estadoRepository.save(estado);
16. }
17. public void remove(Estado estado){
18. estadoRepository.remove(estado);
19. }
20. public List<estado> findAll(){
21. return estadoRepository.findAll();
22. }
23. public List<estado> findByName(String nome){
24. return estadoRepository.findByName(nome);
25. }
26. }

CAMADA DE DADOS

Minha Classe EstadoDao.java

PLAIN TEXT
jandersonfc.com/tutorial-java-flex-na-… 3/9
11/09/2010 TUTORIAL JAVA + FLEX NA PRÁTICA 1…
JAVA:
1. package com.saberprogramar.data.daos;
2. import java.util.List;
3. import org.hibernate.SessionFactory;
4. import org.springframework.beans.factory.annotation.Autowi
5. import org.springframework.beans.factory.annotation.Qualif
6. import org.springframework.orm.hibernate3.support.Hibernat
7. import org.springframework.stereotype.Repository;
8. import com.saberprogramar.business.entitys.Estado;
9. import com.saberprogramar.business.repositorys.EstadoRepos
10. @Repository(value="EstadoRepository")
11. public class EstadoDao extends HibernateDaoSupport
12. implements EstadoRepository {
13. @Autowired
14. public EstadoDao(@Qualifier("sessionFactory") SessionFa
15. // TODO Auto-generated constructor stub
16. super.setSessionFactory(sessionFactory);
17. }
18. @Override
19. public void remove(Estado estado) {
20. // TODO Auto-generated method stub
21. getHibernateTemplate().delete(estado);
22. }
23. @SuppressWarnings("unchecked")
24. @Override
25. public List<estado> findAll() {
26. // TODO Auto-generated method stub
27. return getHibernateTemplate().loadAll(Estado.class
28. }
29. @SuppressWarnings("unchecked")
30. @Override
31. public List<estado> findByName(String nome) {
32. // TODO Auto-generated method stub
33. return getHibernateTemplate().find("from Estado" +
34. " where nome like '%" + nome + "%'");
35. }
36. @Override
37. public void save(Estado estado) {
38. // TODO Auto-generated method stub
39. getHibernateTemplate().saveOrUpdate(estado);
40. }
41. }

CAMADA DE INFRAESTRUTURA

AnnotationOptimizedSessionFactoryBean – Essa classe não é mostrada no link do artigo do Rodrigo


Fraga, porém foi ele também que disponibilizou essa classe. Ao utilizarmos esta classe conseguimos mapear o
package onde ficam nossas Entity do Hibernate (@Entity), configuração essa que é melhor visualizada no
nosso ApplicationContext.xml. Detalhes de para que serve essa classe no fórum FlexBrasil
http://forum.flexbrasil.com.br/viewtopic.php?f=22&t=567

AnnotationOptimizedSessionFactoryBean.java

PLAIN TEXT
JAVA:
1. package com.saberprogramar.infrastructure;
jandersonfc.com/tutorial-java-flex-na-… 4/9
11/09/2010 TUTORIAL JAVA + FLEX NA PRÁTICA 1…
2.
3. import java.util.ArrayList;
4. import java.util.Collection;
5. import java.util.Set;
6.
7. import javax.persistence.Entity;
8.
9. import org.springframework.beans.factory.config.BeanDefini
10. import org.springframework.context.annotation.ClassPathSca
11. import org.springframework.core.type.filter.AnnotationType
12. import org.springframework.orm.hibernate3.annotation.Annot
13. import org.springframework.util.ClassUtils;
14.
15. /**
16. * ###############################
17. * @since 23/04/2008
18. * @version 1.0
19. * @category Infrastructure
20. */
21. public class AnnotationOptimizedSessionFactoryBean extends
22. {
23. /*-----------------------------------------------------
24. * ATTRIBUTES
25. *-----------------------------------------------------
26. private String[] basePackages;
27. private ClassLoader beanClassLoader;
28.
29. /*-----------------------------------------------------
30. * BEHAVIORS
31. *-----------------------------------------------------
32. @Override
33. public void afterPropertiesSet() throws Exception
34. {
35. Collection<class<?>> entities = new ArrayList<class<?
36. ClassPathScanningCandidateComponentProvider scanner
37. for (String basePackage : this.basePackages)
38. {
39. this.findEntities(scanner, entities, basePackage)
40. }
41. this.setAnnotatedClasses(entities
42. .toArray(new Class<?>[entities.size()]));
43. this.setAnnotatedPackages(this.basePackages);
44. super.afterPropertiesSet();
45. }
46.
47. private ClassPathScanningCandidateComponentProvider cre
48. {
49. ClassPathScanningCandidateComponentProvider scanner
50. scanner.addIncludeFilter( new AnnotationTypeFilter(En
51. return scanner;
52. }
53.
54. private void findEntities(ClassPathScanningCandidateComp
55. {
56. Set<beanDefinition> annotatedClasses = scanner.findCa
57.
58. for (BeanDefinition bd : annotatedClasses)
59. {
60. String className = bd.getBeanClassName();
61. Class<?> type = ClassUtils.resolveClassName( class

jandersonfc.com/tutorial-java-flex-na-… 5/9
11/09/2010 TUTORIAL JAVA + FLEX NA PRÁTICA 1…
62. entities.add( type );
63. }
64. }
65.
66. /*-----------------------------------------------------
67. * GET'S AND SET'S
68. *-----------------------------------------------------
69. public void setBasePackage(String basePackage)
70. {
71. this.basePackages = new String[]{ basePackage };
72. }
73. public void setBasePackages(String[] basePackages)
74. {
75. this.basePackages = basePackages;
76. }
77.
78. @Override
79. public void setBeanClassLoader(ClassLoader beanClassLoad
80. {
81. this.beanClassLoader = beanClassLoader;
82. }
83. }

SpringFactory.java

PLAIN TEXT
JAVA:
1. package com.saberprogramar.infrastructure;
2.
3. import org.springframework.beans.BeansException;
4. import org.springframework.beans.factory.NoSuchBeanDefinit
5. import org.springframework.context.ApplicationContext;
6. import org.springframework.web.context.support.WebApplicat
7.
8. import flex.messaging.FactoryInstance;
9. import flex.messaging.FlexFactory;
10. import flex.messaging.config.ConfigMap;
11. import flex.messaging.services.ServiceException;
12.
13. public class SpringFactory implements FlexFactory
14. {
15. private static final String SOURCE = "source";
16.
17. public void initialize(String id, ConfigMap configMap)
18.
19. public FactoryInstance createFactoryInstance(String id,
20. {
21. SpringFactoryInstance instance = new SpringFactoryI
22. instance.setSource(properties.getPropertyAsString(
23. return instance;
24. } // end method createFactoryInstance()
25.
26. public Object lookup(FactoryInstance inst)
27. {
28. SpringFactoryInstance factoryInstance = (SpringFact
29. return factoryInstance.lookup();
30. }

jandersonfc.com/tutorial-java-flex-na-… 6/9
11/09/2010 TUTORIAL JAVA + FLEX NA PRÁTICA 1…
31.
32. static class SpringFactoryInstance extends FactoryInsta
33. {
34. SpringFactoryInstance(SpringFactory factory, String
35. {
36. super(factory, id, properties);
37. }
38.
39.
40. public String toString()
41. {
42. return "SpringFactory instance for id=" + getId
43. }
44.
45. public Object lookup()
46. {
47. ApplicationContext appContext = WebApplication
48. String beanName = getSource();
49.
50. try
51. {
52. return appContext.getBean(beanName);
53. }
54. catch (NoSuchBeanDefinitionException nexc)
55. {
56. ServiceException e = new ServiceException(
57. String msg = "Spring service named '" + bea
58. e.setMessage(msg);
59. e.setRootCause(nexc);
60. e.setDetails(msg);
61. e.setCode("Server.Processing");
62. throw e;
63. }
64. catch (BeansException bexc)
65. {
66. ServiceException e = new ServiceException(
67. String msg = "Unable to create Spring servi
68. e.setMessage(msg);
69. e.setRootCause(bexc);
70. e.setDetails(msg);
71. e.setCode("Server.Processing");
72. throw e;
73. }
74. }
75.
76. }
77.
78. }

No próximo Artigo continuaremos com o Backend, só que com os nossos arquivos de configuração no nosso
WEB-INF. Há, e desculpe pelo erro de português, faltei as aulas de português para fica programando.
huahuahu

Vlw e até logo.

Gostou? divulgue ;):

jandersonfc.com/tutorial-java-flex-na-… 7/9
11/09/2010 TUTORIAL JAVA + FLEX NA PRÁTICA 1…

Popularity: 100% [?]

www.dclick.com.br Anúncios Google

Posted in #JAVA + FLEX NA PRÁTICA, Blazeds, Data Service, Frameworks, Hibernate, Java, MVC, Spring, Swiz Framework |
Tagged Código Fonte Flex, Código Fonte java, DomainDriveDesign, Hibernate, hibernate Annotations, Indico a Leitura,
Java, pratica java flex, Spring, SPRING ANNOTATIONS, TUTORIAL FLEX, TUTORIAL JAVA

Comments (10) Logar

Classificar por: Data Classificação Última Atividade

TUTORIAL JAVA + FLEX NA PRÁTICA 2/6 | SaberProgramar.com


[...] Esse artigo é continuação do TUTORIAL JAVA + FLEX NA PRÁTICA 1/6. [...]

TUTORIAL JAVA + FLEX NA PRÁTICA 3/6 | SaberProgramar.com


[...] artigo é continuação do TUTORIAL JAVA + FLEX NA PRÁTICA 1/6 TUTORIAL JAVA + FLEX NA PRÁTICA [...]

TUTORIAL JAVA + FLEX NA PRÁTICA 4/6 | SaberProgramar.com


[...] artigo é continuação do TUTORIAL JAVA + FLEX NA PRÁTICA 1/6 TUTORIAL JAVA + FLEX NA PRÁTICA 2/6
TUTORIAL JAVA + FLEX NA PRÁTICA [...]

TUTORIAL JAVA + FLEX NA PRÁTICA 5/6 | SaberProgramar.com


[...] artigo é continuação do TUTORIAL JAVA + FLEX NA PRÁTICA 1/6 TUTORIAL JAVA + FLEX NA PRÁTICA 2/6
TUTORIAL JAVA + FLEX NA PRÁTICA 3/6 TUTORIAL JAVA + FLEX NA [...]

TUTORIAL JAVA + FLEX NA PRÁTICA 6/6 | SaberProgramar.com


[...] artigo é continuação do TUTORIAL JAVA + FLEX NA PRÁTICA 1/6 TUTORIAL JAVA + FLEX NA PRÁTICA 2/6
TUTORIAL JAVA + FLEX NA PRÁTICA 3/6 TUTORIAL JAVA + FLEX NA [...]

TUTORIAL JAVA + FLEX NA PRÁTICA 7/6 - Bônus | SaberProgramar.com


[...] artigo é continuação do TUTORIAL JAVA + FLEX NA PRÁTICA 1/6 TUTORIAL JAVA + FLEX NA PRÁTICA 2/6
TUTORIAL JAVA + FLEX NA PRÁTICA 3/6 TUTORIAL JAVA + FLEX NA [...]

SaberProgramar com nova Hospedagem | SaberProgramar.com


[...] resumindo… para comemorar vou colocar para download o projeto java do Tutorial JAVA + FLEX NA PRÁTICA com
todos os jars, já que muitos me [...]

Retrospectiva 2009, Meta 2010 e Boas Festas | SaberProgramar.com


[...] Esse é o primeiro ano do SaberProgramar.com e até que foi bem aceito na blogsfera… muito contato por email que
resultou em parceria diária de ajuda, fora as oportunidades de trabalho que recebi através do mesmo, sei que tenho que
melhorar muita coisa mas isso não importa neste momento, muitos já me conhecem na web, espero ajudar mais
desenvolvedores nesse ano de 2010 com excelentes tutoriais como foi o TUTORIAL JAVA + FLEX NA PRÁTICA. [...]

Alberto Pampado · 29 semanas atrás 0

Para que você colocou a instrução em métodos nos arquivos de DAO

// TODO Auto-generated method stub

Eu tive que retirar a instrução @Override pois estava dando erro. Eu pensando se isso irá repercutir em algum lugar no
programa.

By the way: Parabéns pelo post.

jandersonfc.com/tutorial-java-flex-na-… 8/9
11/09/2010 TUTORIAL JAVA + FLEX NA PRÁTICA 1…
Responder 1 resposta · ativo 29 semanas atrás

jandersonfc 38p · 29 semanas atrás +1

essa instrução não sou eu que coloco não, toda vez que crio uma classe e informa a interface, o próprio eclipse criar
a estrutura dos métodos que tem que ser implementados, então para saber quais foram o métodos criados pelo
eclipse esse comentário(nada mais que isso) pode tirar sem problemas... enquanto ao @override é um segunda
forma de sobscrever métodos(com annotations) e na teoria não pode dar erro nenhum ja que essa anotação faz parte
do sdk do java.

Cumps.
Responder

Postar um novo comentário

Comentar como Visitante, ou logar:

Nome Email Website (opcional)

Mostrar junto aos seus comentários. Não mostrado publicamente. Se você tem um website, linke para ele aqui.

Assinar Nada Enviar Comentário

Comments by

Copyright © 2010 jandersonfc.

jandersonfc.com/tutorial-java-flex-na-… 9/9

Você também pode gostar