Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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
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. }
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. }
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
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.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
jandersonfc.com/tutorial-java-flex-na-… 7/9
11/09/2010 TUTORIAL JAVA + FLEX NA PRÁTICA 1…
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
Eu tive que retirar a instrução @Override pois estava dando erro. Eu pensando se isso irá repercutir em algum lugar no
programa.
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
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
Mostrar junto aos seus comentários. Não mostrado publicamente. Se você tem um website, linke para ele aqui.
Comments by
jandersonfc.com/tutorial-java-flex-na-… 9/9