Spring MVC 3.1 – Implementando uma aplicação CRUD com o Spring Data MongoDB (Part 1)

Nesse tutorial iremos criar uma aplicação CRUD simples usando o Spring 3.1 e o MongoDB. Em particular, usaremos o Spring MVC para desenvolver a aplicação web e o SPring Data MongoDB para o repositório.

Índice do conteúdo

  • Parte 1: Introdução e Especificações funcionais
  • Parte 2: Configuração do MongoD
  • Parte 3: Classes Java
  • Parte 4: Configuração dos arquivos XML
  • Parte 5: Arquivos HTML (com AJAX)
  • Parte 6: Executando a aplicação

 

Dependências

  • Spring core 3.1.0.RELEASE
  • Spring Data MongoDB 1.0.0.RELEASE
  • MongoDB (server) 2.0.2
  • MongoDB (Java driver) 2.7.2
  • See pom.xml for details


Github

Para acessar o código fonte do projeto, visite o repositório Github (clique aqui).

Especificações funcionais

Antes de começarmos, vamos definir as especificações de nossa aplicação, como segue:

  • Uma página CRUD para gerenciar os usuários
  • Uso do AJAX para evitar atualização da página
  • Usuários possuem regras. Eles podem ser admin ou regular (que é o padrão)
  • Qualquer um pode criar novos usuário e editar os existentes
  • Quando estiverem editando um usuário, eles podem alterar apenas o primeiro nome, último nome e campos de regras
  • Um nome de usuário deve ser único

Abaixo segue o diagrama de Caso de Uso:

 

Banco de dados

Se você for iniciante no MongoDB e possuir experiência com SQL, arranje algum tempo para ler o artigo SQL to Mongo Mapping Chart. É uma comparação entre o SQL e o MongoDB.
Temos duas coleções (tabelas em SQL): user e role. A coleção user contém informações pessoais de cada usuário, enquanto a coleção role contém os valores das regras para cada usuário onde o valor “1” representa um admin e o valor “2” representa um usuário regular.
Abaixo segue o diagrama de Classe:

 

Documento User

Abaixo segue a estrutura JSON para o documento User depois do Sprinf Data MongoDB ter criado a coleção:

{
   "_id" : "" ,
   "_class" : "org.krams.domain.User"
   "firstName" : ""
   "lastName" : ""
   "username" : ""
   "password" : "" ,
   "role" : { "$ref" : "role" , "$id" : "" }
}

Observe que a propriedade role é uma referência para o registro Role como indicado pela propriedade $ref: role.

Documento Role

Abaixo está a estrutura JSON do documento Role depois que o  Spring Data MongoDB ter criado a coleção:

{
   "_id" : ""
   "_class" : "org.krams.domain.Role"
   "role" : ""
}

 

Capturas de telas

Vamos visualizar como a aplicação irá ficar após ser finalizada. Essa é uma boa maneira de esclarecer as especificações da aplicação.
O diagrama de Atividades:

Página de entrada
A página de entrada é a página principal que os usuário verão. Ela contém uma tabela contendo registros de usuários e quatro botões para adicionar, editar, deletar e recarregar dados. Todas as interações ocorrem nessa página.

Editando um registro existente
Quando o usuário clica no botão Edit, um formulário Edit Record aparecerá abaixo da tabela.

Quando o usuário submete o formulário, uma mensagem de sucesso ou falha é mostrada.

Quando a operação é bem sucedida, a atualização do registro deve ser refletida na tabela.

Criando um novo registro
Quando o usuário clica no botão New, um formulário Create New record aparecerá abaixo do tabela.

Quando o usuário submete o formulário, uma mensagem de sucesso ou falha deve aparecer.

Quando a operação é bem sucedida, o novo registro deve aparecer na tabela.

Apagando um registro
Quando o usuário clica no botão Delete, uma mensagem de sucesso ou falha deve aparecer.

Recarregando o registro
Quando o usuário clica no botão Reload, os dados da tabela serão recarregados.
Erros
Quando um usuário clica no botão Edit ou Delete sem selecionar um registro, uma mensagem  “Select a record first!” deve ser mostrada.

No próximo artigo (parte 2)

No próximo artigo, veremos como configurar um servidor MongoDB no Windows e no Ubuntu.