Tecnologias associadas ao bean de persistência gerenciada por contêiner
O WebSphere Application Server entrega serviços de persistência gerenciada por contêiner (CMP) além dos padrões definidos pela especificação Enterprise JavaBeans (EJB).
- Herança de bean de entidade
- A herança é um aspecto fundamental do desenvolvimento de software orientado a objetos
e é um recurso atualmente ausente na especificação EJB.
O uso de herança permite a um desenvolvedor definir campos, relacionamentos e lógia de negócio em um bean de entidade de superclasse que são herdados por todas as superclasses. Consulte a seção Herança EJB da documentação do Rational Application Developer para obter detalhes sobre como usar a herança com o WebSphere Application Server e os beans de entidade.
- Políticas de Intenção de Acesso
- As políticas de intenção de acesso fornecem aos desenvolvedores de aplicativos Java™ Platform, Enterprise Edition (Java EE) o mecanismo pelo qual eles podem indicar a intenção de uma interação do aplicativo com o estado essencial para beans de entidade a fim de que os mecanismos de persistência possam fazer as otimizações apropriadas. Por exemplo, se for sabido que uma entidade não é atualizada durante o curso de uma transação, o gerenciamento de persistência pode relaxar o controle de simultaneidade e ainda manter a integridade dos dados não permitindo operações de atualização nesse bean pela duração da transação.
- Armazenando dados em cache entre transações
- O armazenamento de dados em cache entre transações
é uma opção configurável definida pelo implementador do bean que pode melhorar muito o
desempenho. Essencialmente, isto é para dados que não são alterados com freqüência. A
opção é conhecida como LifetimeInCache. Os dados para uma entidade configurada
para tempo de vida em cache são armazenados em um cache até que seu tempo de vida especificado expire. Os pedidos para a entidade durante esse tempo de vida configurado utilizam os dados armazenados em cache
e não resultam na execução de consultas ao data store
subjacente. O tempo de vida pode ser expresso como tempo decorrido desde que os dados foram recuperados
do data store ou até um horário do dia ou semana especificados. O valor
LifetimeInCache pode ser um dos seguintes:
- Desligar
- A configuração LifetimeInCache é ignorada. Os beans desse tipo estão apenas em cache em um cache com escopo definido da transação. Os dados em cache para essa instância não são válidos quando a transação é concluída.
- ElapsedTime
- O valor na configuração LifetimeInCache é incluído para o tempo atual quando a transação (na qual a instância de bean é recuperada) é concluída. Os dados em cache para essa instância não são válidos após esse tempo. O valor da configuração LifetimeInCache pode incluir minutos, horas, dias e assim por diante.
- ClockTime
- O valor de LifetimeInCache representa uma hora particular do dia. O
valor é incluído para a meia-noite imediatamente precedente ou seguinte
para calcular um valor de tempo futuro, que é então tratado como o Tempo
Decorrido. Utilizar essa configuração permite especificar que todas as
instâncias desse tipo de bean tenham seus dados em cache invalidados em
um tempo específico, não importando quando os dados foram recuperados.
A utilização da meia-noite precedente ou seguinte para calcular um valor de hora futura dependendo do valor de LifetimeInCache. Se LifetimeInCache mais a meia-noite precedente é anterior ao tempo atual, então a meia-noite seguinte é utilizada.
Ao utilizar a configuração do ClockTime, o valor LifetimeInCache não deve representar mais de 24 horas. Se isso ocorrer, o gerenciador de cache subtrairá os incrementos de 24 horas até que um valor menor ou igual a 24 horas seja alcançado. Para invalidar os dados à meia-noite, você define LifetimeInCache como zero (0).
- WeekTime
- Essa configuração é semelhante a ClockTime, exceto se o valor LifetimeInCache for incluído na meia-noite precedente ou seguinte do domingo (na verdade, 23:59 no sábado mais um minuto). Nesse caso, o valor de LifetimeInCache pode representar mais de 24 horas, mas não mais de 7 dias.
Nota:Como os dados utilizados por um bean de entidade podem ser carregados por transações anteriores, se você configurar o bean como LifeTimeInCache, o nível de isolamento e a trava de atualização (políticas de intenção de acesso) para o bean serão perdidos para a transação atual. Isso pode provocar problemas na integridade de dados se seu aplicativo tiver lógica para calcular informações a partir dos dados de leitura e, em seguida, salvar o resultado em outro bean. Isso torna importante executar a verificação de consistência leitura-leitura para assegurar que os dados fiquem travados adequadamente se carregar os dados do cache em memória; caso contrário, os dados serão atualizados para o banco de dados sem saber se os dados adjacentes foram alterados, fazendo com que as alterações anteriores sejam perdidas. Para obter informações adicionais, consulte o tópico "Configurando a Verificação de Consistência de Leitura Antecipada com uma Ferramenta de Montagem".
- Beans de Entidade de Leitura
- Declarar beans de entidade como de leitura aumenta o aprimoramento de
desempenho oferecido pelo armazenamento em cache. Os dois recursos operam no mesmo princípio:
para minimizar o código extra incorrido pelo freqüente recarregamento de beans de entidade
dos dados no armazenamento persistente. Ao designar os beans de entidade como de leitura,
você pode especificar os requisitos de recarregamento e a freqüência, de acordo com as
necessidades de seu aplicativo.
Para utilizar essa função, declare o tipo de bean como de leitura, selecionando um determinado conjunto de opções de cache de bean, em uma lista de seleção na ferramenta de montagem. Consulte Configurando a Verificação de Consistência Leitura-leitura com uma Ferramenta de Montagem para obter detalhes.