PSW1 Prof. Rafael
Persistência Atividade que permite que o estado de um objeto exista mesmo após a extinção do processo computacional que o criou. Em outras palavras, trata-se de armazenar em memória não volátil informações suficientes para restaurar um objeto em um momento posterior.
Persistência A persistência de um objeto geralmente requer que ele seja serializável Objetos serializáveis são aqueles que possuem a capacidade de representar seus dados em uma serie de informações. Essa série é armazenável em arquivos e ‘enviável’ através da rede. Pode ser em formato texto ou binário. Em Java usa-se o midleware JDBC para implementar persistência de objetos Rafael:Professor String nome; [rafael] String disciplinas; [psw1,poo] String campus; [Taguatinga1] Professor|rafael|psw1,poo|Taguatinga1 Professor String nome; String disciplinas; String campus; Professor|Rogerio|psd,rec|Taguatinga1 ClasseObjetoSerialização
Midleware
Middleware JDBC
JDBC e SGBD são coisas diferentes JDBC é um meio (padrão) para acessar o SGBD SGBD é o Sistema gerenciador de Banco de Dados Java DB é um SGBD 100% em Java Faz parte do projeto Apache Derby Instalado junto com o suporte Java EE no NetBeans Facilmente utilizável por meio do NetBeans Exceto no UniCeub, pois temos um bloqueio na porta padrão. Vamos tentar superá-lo juntos!
JAVA DB no Netbeans Roda na porta 1527 No arquivo java.policy é preciso existir a entrada grant { permission java.net.SocketPermission "localhost:1527", "listen"; }; Não temos permissão para alterar o java.policy Vamos tentar alterar a porta do banco...
Utilizando o banco Criar uma tabela Cliente Nome Cpf Criar um método persistir() no cliente Inserir código para salvar o cliente no banco Criar um método restaurar() no cliente Inserir código para restaurar o cliente com os dados do banco.
Persistência A solução apresentada anteriormente implementa o padrão bean- managed persistence. Cada objeto implementa sua própria persistência Maior aderência com a orientação a objetos Menor complexidade da solução Pouca flexibilidade para alterações de fontes de dados. Pouca oportunidade de reutilização de código Objetos muito grandes, com lógica de negócio e de infra- estrutura(persistência) misturadas. Caso necessitemos de um método que busca todos os clientes, em qual classe estaria esse método? Caso precisássemos listar apenas o nome dos clientes, como fazer?
DAO – Data Access Object Padrão de projeto que sugere que se crie um objeto dedicado a implementar a persistência das entidades. Propõe a separação entre instruções de acesso a dados e código correspondente a negócio. A persistência é feita por meio do DAO, que recebe objetos a salvar e retorna objetos solicitados.
DAO – Data Access Object StudentDao studentDao = new StudentDao(); Student student = studentDao.getStudentByNumber(“RA022023”) student.setStatus(“ACTIVE"); studentDao.updateStudent(student);
DAO – Data Access Object Main(StudentDao dao) { StudentDao studentDao = dao; Student student = studentDao.getStudentByNumber(“RA022023”) student.setStatus(“ACTIVE"); studentDao.updateStudent(student); } Main( new StudentDaoImpl()); O uso de interfaces permite trocar a fonte de dados sem alterações no cliente.
DAO – Data Access Layer Vantagens Possibilita transparência do acesso aos dados – Os beans não sabem como acessar seus dados. Seu foco é exclusivamente as regras de negócio. Há redução de complexidade do bean. Possibilita fácil alteração da fonte de dados – basta trocar o DAO. Centraliza o código de acesso a dados em uma camada explícita – Facilita localização do código de dados e consequentemente facilita a manutenção.
DAO – Data Access layer Desvantagens Adição de mais objetos e camadas. Dispensável se o contêiner da aplicação já oferecer serviços de persistência (EJB por exemplo)
DAO – Data Access layer Altere o projeto Beans com persistência para fazer com que o acesso aos dados se dê por meio de DAO.