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!
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:
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
-
package com.saberprogramar.business.entitys;
-
import javax.persistence.Entity;
-
import javax.persistence.GeneratedValue;
-
import javax.persistence.GenerationType;
-
import javax.persistence.Id;
-
import javax.persistence.Table;
-
@Table(name="estado")
-
public class Estado {
-
@Id @GeneratedValue(strategy = GenerationType.AUTO)
-
private long idEstado;
-
private String nome;
-
private String uf;
-
//…. Getters e Setters
-
}
Meu repositório EstadoRepository.java
-
package com.saberprogramar.business.repositorys;
-
import java.util.List;
-
import com.saberprogramar.business.entitys.Estado;
-
public interface EstadoRepository {
-
public void save(Estado estado);
-
public void remove(Estado estado);
-
public List<estado> findAll();
-
}
Meu Serviço EstadoService.java
-
package com.saberprogramar.business.services;
-
import java.util.List;
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.stereotype.Service;
-
import com.saberprogramar.business.entitys.Estado;
-
import com.saberprogramar.business.repositorys.EstadoRepository;
-
@Service(value="EstadoService")
-
public class EstadoService {
-
EstadoRepository estadoRepository;
-
@Autowired
-
public void setEstadoRepository(EstadoRepository estadoRepository) {
-
this.estadoRepository = estadoRepository;
-
}
-
public void save(Estado estado){
-
estadoRepository.save(estado);
-
}
-
public void remove(Estado estado){
-
estadoRepository.remove(estado);
-
}
-
public List<estado> findAll(){
-
return estadoRepository.findAll();
-
}
-
return estadoRepository.findByName(nome);
-
}
-
}
CAMADA DE DADOS
Minha Classe EstadoDao.java
-
package com.saberprogramar.data.daos;
-
import java.util.List;
-
import org.hibernate.SessionFactory;
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.beans.factory.annotation.Qualifier;
-
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
-
import org.springframework.stereotype.Repository;
-
import com.saberprogramar.business.entitys.Estado;
-
import com.saberprogramar.business.repositorys.EstadoRepository;
-
public class EstadoDao extends HibernateDaoSupport
-
implements EstadoRepository {
-
@Autowired
-
public EstadoDao(@Qualifier("sessionFactory") SessionFactory sessionFactory) {
-
// TODO Auto-generated constructor stub
-
super.setSessionFactory(sessionFactory);
-
}
-
@Override
-
public void remove(Estado estado) {
-
// TODO Auto-generated method stub
-
getHibernateTemplate().delete(estado);
-
}
-
@SuppressWarnings("unchecked")
-
@Override
-
public List<estado> findAll() {
-
// TODO Auto-generated method stub
-
return getHibernateTemplate().loadAll(Estado.class);
-
}
-
@SuppressWarnings("unchecked")
-
@Override
-
// TODO Auto-generated method stub
-
return getHibernateTemplate().find("from Estado" +
-
" where nome like '%" + nome + "%'");
-
}
-
@Override
-
public void save(Estado estado) {
-
// TODO Auto-generated method stub
-
getHibernateTemplate().saveOrUpdate(estado);
-
}
-
}
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
-
package com.saberprogramar.infrastructure;
-
-
import java.util.ArrayList;
-
import java.util.Collection;
-
import java.util.Set;
-
-
import javax.persistence.Entity;
-
-
import org.springframework.beans.factory.config.BeanDefinition;
-
import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
-
import org.springframework.core.type.filter.AnnotationTypeFilter;
-
import org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean;
-
import org.springframework.util.ClassUtils;
-
-
/**
-
* ###############################
-
* @since 23/04/2008
-
* @version 1.0
-
* @category Infrastructure
-
*/
-
public class AnnotationOptimizedSessionFactoryBean extends AnnotationSessionFactoryBean
-
{
-
/*-------------------------------------------------------------------
-
* ATTRIBUTES
-
*-------------------------------------------------------------------*/
-
private ClassLoader beanClassLoader;
-
-
/*-------------------------------------------------------------------
-
* BEHAVIORS
-
*-------------------------------------------------------------------*/
-
@Override
-
{
-
Collection<class<?>> entities = new ArrayList<class<?>>();
-
ClassPathScanningCandidateComponentProvider scanner = this.createScanner();
-
{
-
this.findEntities(scanner, entities, basePackage);
-
}
-
this.setAnnotatedClasses(entities
-
.toArray(new Class<?>[entities.size()]));
-
this.setAnnotatedPackages(this.basePackages);
-
super.afterPropertiesSet();
-
}
-
-
private ClassPathScanningCandidateComponentProvider createScanner()
-
{
-
ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
-
return scanner;
-
}
-
-
private void findEntities(ClassPathScanningCandidateComponentProvider scanner, Collection<class<?>> entities, String basePackage)
-
{
-
Set<beanDefinition> annotatedClasses = scanner.findCandidateComponents(basePackage);
-
-
for (BeanDefinition bd : annotatedClasses)
-
{
-
Class<?> type = ClassUtils.resolveClassName( className, this.beanClassLoader );
-
entities.add( type );
-
}
-
}
-
-
/*-------------------------------------------------------------------
-
* GET'S AND SET'S
-
*-------------------------------------------------------------------*/
-
{
-
}
-
{
-
this.basePackages = basePackages;
-
}
-
-
@Override
-
{
-
this.beanClassLoader = beanClassLoader;
-
}
-
}
SpringFactory.java
-
package com.saberprogramar.infrastructure;
-
-
import org.springframework.beans.BeansException;
-
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
-
import org.springframework.context.ApplicationContext;
-
import org.springframework.web.context.support.WebApplicationContextUtils;
-
-
import flex.messaging.FactoryInstance;
-
import flex.messaging.FlexFactory;
-
import flex.messaging.config.ConfigMap;
-
import flex.messaging.services.ServiceException;
-
-
public class SpringFactory implements FlexFactory
-
{
-
-
-
{
-
SpringFactoryInstance instance = new SpringFactoryInstance(this, id, properties);
-
instance.setSource(properties.getPropertyAsString(SOURCE, instance.getId()));
-
return instance;
-
} // end method createFactoryInstance()
-
-
{
-
SpringFactoryInstance factoryInstance = (SpringFactoryInstance) inst;
-
return factoryInstance.lookup();
-
}
-
-
static class SpringFactoryInstance extends FactoryInstance
-
{
-
{
-
super(factory, id, properties);
-
}
-
-
-
{
-
return "SpringFactory instance for id=" + getId() + " source=" + getSource() + " scope=" + getScope();
-
}
-
-
{
-
ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(flex.messaging.FlexContext.getServletConfig().getServletContext());
-
-
try
-
{
-
return appContext.getBean(beanName);
-
}
-
catch (NoSuchBeanDefinitionException nexc)
-
{
-
ServiceException e = new ServiceException();
-
e.setMessage(msg);
-
e.setRootCause(nexc);
-
e.setDetails(msg);
-
e.setCode("Server.Processing");
-
throw e;
-
}
-
catch (BeansException bexc)
-
{
-
ServiceException e = new ServiceException();
-
e.setMessage(msg);
-
e.setRootCause(bexc);
-
e.setDetails(msg);
-
e.setCode("Server.Processing");
-
throw e;
-
}
-
}
-
-
}
-
-
}
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.
Popularity: 100% [?]
Tags: 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
Categoria(s):#JAVA + FLEX NA PRÁTICA, Blazeds, Data Service, Frameworks, Hibernate, Java, MVC, Spring, Swiz Framework









[...] Esse artigo é continuação do TUTORIAL JAVA + FLEX NA PRÁTICA 1/6. [...]
[...] artigo é continuação do TUTORIAL JAVA + FLEX NA PRÁTICA 1/6 TUTORIAL JAVA + FLEX NA PRÁTICA [...]
[...] 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 [...]
[...] 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 [...]
[...] 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 [...]
[...] 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 [...]
[...] 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 [...]
[...] 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. [...]