Este artigo informa à entrevista clássica, as perguntas de teste escritas e suas respostas de referência. Compartilhe -o para sua referência, como segue:
1. Como o hibernato funciona e por que deveria ser usado?
princípio:
1. Ler e analisar arquivos de configuração
2. Leia e analise as informações de mapeamento e crie uma fábrica de sessão
3. Sessão aberta
4. Crie uma transação de transação
5. Operação de persistência
6. Enviar transações
7. Fechar sessão
8. Fechar sesstionFactory
Por que usar:
①. O código para bancos de dados de acesso ao JDBC foi encapsulado, simplificando bastante o código repetitivo complicado na camada de acesso a dados.
②. O Hibernate é uma estrutura de persistência convencional baseada no JDBC e é uma excelente implementação do ORM. Simplifica muito o trabalho de codificação da camada dao em grande parte
③. O Hibernate usa o mecanismo de reflexão Java, em vez de programas de aprimoramento de bytecode para alcançar a transparência.
④. O Hibernate tem um desempenho muito bom porque é uma estrutura leve. A flexibilidade do mapeamento é excelente. Ele suporta vários bancos de dados relacionais, de um a um a muitos e muitos relacionamentos complexos.
2. Como o hibernate atrasa o carregamento?
①. HIBERNATE2 Atraso no carregamento da implementação: a) Objeto da entidade b) Coleção (coleção)
②. Hibernate3 fornece a função de carregamento atrasada dos atributos. Quando o Hibernate consulta dados, os dados não existem e a memória. Quando o programa realmente opera com os dados, o objeto existe e a memória, o que realiza o carregamento tardio. Ele salva a sobrecarga de memória do servidor e, portanto, melhora o desempenho do servidor.
3. Como implementar o relacionamento entre as classes em Hibernate? (como um relacionamento um para muitos, muitos para muitos)
A relação entre classes é refletida principalmente na relação entre tabelas. Eles operam em objetos na cidade. Nosso programa mapeia todas as tabelas e aulas, e elas são passadas por muitos para um, um para muitos, muitos para muitos e muitos para muitos no arquivo de configuração.
4. Vamos falar sobre o mecanismo de cache do Hibernate
①. O cache interno também é chamado de cache de primeiro nível em Hibernate, que pertence ao cache no nível de aplicação
②. Cache de Nível 2:
a) Aplicação e cache
b) Condições de cache distribuídas: os dados não serão modificados por terceiros, o tamanho dos dados está dentro de um intervalo aceitável, a frequência de atualização de dados é baixa, os mesmos dados são frequentemente usados pelo sistema e dados não críticos
c) Implementação de cache de terceiros
5. Método de consulta de hibernato
SQL, critérios, composição de objetos
HQL:
1. Consulta de atributo
2. Consulta de parâmetros, denunciada consulta de parâmetros
3. Consulta relacionada
4. Consulta de paginação
5. Funções estatísticas
6. Como otimizar o Hibernate?
①. Use uma associação bidirecional de um para muitos, não um para muitos ② ②. Use uma associação individual de um para muitos ③. Não use um a um, use muitos para um em vez de ④. Configure o cache do objeto, não use o conjunto de cache ⑤. Use bolsa para coleções um para muitos e use o conjunto para coleções muitas para muitas.
⑥. Use o polimorfismo explícito nas classes de herança⑦. Deve haver menos campos de mesa e não tenha medo de muitas associações de mesa. Há um cache secundário para apoiá -lo.
7. Struts Mecanismo de trabalho? Por que usar suportes?
Mecanismo de trabalho:
Fluxo de trabalho do Struts:
O Ações de Inicialização será carregado quando o aplicativo da Web for iniciado. O serviço de ação será carregado de
Leia as informações de configuração do arquivo struts-config.xml e armazene-as em vários objetos de configuração
Quando o ActionServlet receber uma solicitação do cliente, o seguinte processo será executado.
-(1) Recupere a instância de ação de ação que corresponde à solicitação do usuário. Se não existir, retornará o caminho de solicitação Informações inválidas;
-(2) Se a instância do ActionForm não existir, crie um objeto de forma de ação e salve os dados do formulário enviados pelo cliente ao objeto ActionForm;
-(3) Decida se a verificação do formulário é necessária com base nas informações de configuração. Se a verificação for necessária, ligue para o método validate () do ActionForm;
-(4) Se o método Validate () de ação dever retornar nulo ou retornar um objeto Atuiberrors que não contenha o ActionMessage, isso significa que a verificação do formulário é bem -sucedida;
-(5) O ActionServlet decide qual ação encaminhar a solicitação com base nas informações de mapeamento contidas no ActionMapping. Se a instância de ação correspondente não existir, crie esta instância primeiro e depois chame o método execute () da ação;
-(6) o método Execute () da ação retorna um objeto ActionForward, e o ACOCSERVLET ENVIRA A SOITOR DE CLIENTE ao componente JSP apontado pelo objeto ActionForward;
-(7) O objeto ActionForward aponta para o componente JSP para gerar uma página da Web dinâmica e o retorna ao cliente;
Por que usar:
O surgimento das tecnologias JSP, Servlet e Javabean nos fornece a possibilidade de construir poderosos sistemas de aplicativos corporativos. Mas o sistema construído com essas tecnologias é muito caótico; portanto, além disso, precisamos de uma regra e uma regra para organizar essas tecnologias. Esta é a estrutura, e surgiram suportes.
As aplicações desenvolvidas com base em struts são compostas por três tipos de componentes: componentes do controlador, componentes do modelo e componentes de visualização
8. Como a estrutura validada dos struts é validada?
Configure solicitações de erro específicas no arquivo de configuração STRUTS e, em seguida, ligue para o método validate () no formbean.
9. Vamos falar sobre o padrão de design de struts
Modo MVC: o ActionServler é carregado e inicializado quando o aplicativo da Web é iniciado. Quando o usuário envia um formulário, um objeto ActionForm configurado é criado e preenchido nos dados correspondentes do formulário. O ActionServler decide se a verificação do formulário é necessária com base nas configurações definidas pelo arquivo struts-config.xml. Se necessário, ligue para o Validate () da ActionForm () e selecione a qual ação enviar a solicitação. Se a ação não existir, o ACOCSERVlet criará primeiro esse objeto e depois chamará o método Execute () da ação. Execute () obtém dados do objeto ActionForm, completa a lógica de negócios e retorna um objeto ActionForward. O ActionServlet encaminha a solicitação do cliente ao componente JSP especificado pelo objeto ActionForward. O JSP especificado pelo objeto ActionForward gera uma página da Web dinâmica e a retorna ao cliente.
10. Mecanismo de trabalho da primavera e por quê?
①.Spring MVC Por favor, envie todas as solicitações ao DispatcheserServlet, que confiarão outros módulos do sistema de aplicativos a serem responsáveis pelo processamento real da solicitação.
②.dispatcherServlet Consulte uma ou mais manipulações de mão e encontra o controlador que lida com a solicitação.
③.dispatcherServlet Por favor, envie a solicitação ao controlador de destino
④. Depois que o controlador executa o processamento da lógica de negócios, ele retornará um ModelAndView.
⑤.dispathcher consulta um ou mais resolvedores de exibição do ViewResolver e encontra o objeto View especificado pelo objeto ModelAndView ⑥. O objeto View é responsável por renderizá -lo e devolvê -lo ao cliente.
Por que usar:
{AOP permite que os desenvolvedores criem preocupações não comportamentais, chamadas preocupações cruzadas e insira-as no código do aplicativo. Após o uso da AOP, os serviços públicos (como logs, persistência, transações etc.) podem ser divididos em aspectos e aplicados a objetos de domínio sem aumentar a complexidade do modelo de objetos de objetos de domínio.
O COI permite a criação de um ambiente de aplicativo em que os objetos possam ser construídos e depois passar seus objetos colaborativos para esses objetos. Como a palavra inversão indica, o COI é como o JNDI reverso. Sem usar várias fábricas abstratas, localizadores de serviços, singletons e construção direta, cada objeto é construído com seus objetos colaborativos. Portanto, o colaborador é gerenciado pelo contêiner.
A primavera é um contêiner do COI, mesmo que seja uma estrutura AOP. A melhor coisa da primavera é que ela ajuda a substituir os objetos. Com a primavera, basta adicionar dependências (objetos de colaboração) usando propriedades javabeus e arquivos de configuração. Objetos de colaboração com interfaces semelhantes podem ser facilmente substituídos quando necessário. }
A estrutura da primavera é uma arquitetura hierárquica que consiste em 7 módulos bem definidos. Os módulos de primavera são construídos sobre os contêineres do núcleo que definem como os grãos são criados, configurados e gerenciados.
Cada módulo (ou componente) que compõe a estrutura da mola pode existir sozinho ou ser implementado em conjunto com um ou mais outros módulos. As funções de cada módulo são as seguintes:
☆ Container de núcleo: o contêiner do núcleo fornece as funções básicas da estrutura da mola. O principal componente do contêiner principal é o BeanFactory, que é uma implementação do padrão de fábrica. O BeanFactory usa o modo de inversão do controle (IOC) para separar as especificações de configuração e dependência de um aplicativo do código de aplicativo real.
☆ Contexto da mola: o contexto da primavera é um arquivo de configuração que fornece informações de contexto à estrutura da mola. O contexto da primavera inclui serviços corporativos como JNDI, EJB, e -mail, internacionalização, recursos de soma de verificação.
☆ Spring AOP: Através do recurso de gerenciamento de configuração, o módulo Spring AOP integra diretamente as funções de programação orientadas a aspectos na estrutura da mola. Portanto, é fácil tornar qualquer objeto gerenciado pela Spring Framework Support AOP. O módulo Spring AOP fornece serviços de gerenciamento de transações para objetos em aplicativos baseados em primavera. Ao usar a Spring AOP, o gerenciamento de transações declarativas pode ser integrado ao aplicativo sem depender dos componentes EJB.
☆ Spring Dao: A camada de abstração JDBC DAO fornece uma hierarquia de exceção significativa que pode ser usada para gerenciar mensagens de manuseio de exceções e erros lançadas por diferentes fornecedores de banco de dados. A hierarquia de exceção simplifica o manuseio de erros e reduz bastante a quantidade de código de exceção que precisa ser escrito (como abertura e fechamento de conexões). As exceções orientadas a JDBC da Spring Dao seguem a hierarquia de exceção da DAO comum.
☆ Spring ORM: O Spring Framework insere várias estruturas ORM, fornecendo assim ferramentas de relacionamento com objetos ORM, incluindo o mapa JDO, Hibernate e Ibatis SQL. Tudo isso segue a transação comum da primavera e a hierarquia de exceção Dao.
☆ Módulo da Web Spring: O módulo de contexto da Web é construído no módulo de contexto de aplicativos e fornece contexto para aplicativos baseados na Web. Portanto, o Spring Framework suporta integração com os suportes de Jacarta. O módulo da Web também simplifica o trabalho de lidar com solicitações de várias partes e parâmetros de solicitação de ligação aos objetos de domínio.
☆ Spring MVC Framework: O MVC Framework é uma implementação do MVC totalmente funcional para a criação de aplicativos da Web. Através da interface da política, a estrutura do MVC se torna altamente configurável e o MVC abriga um grande número de tecnologias de exibição, incluindo JSP, velocidade, ladrilhos, iText e POI.
Os recursos da Spring Framework podem ser usados em qualquer servidor J2EE, e a maioria deles é adequada para ambientes não gerenciados. O ponto principal da primavera é: Suporte para objetos reutilizáveis de negócios e acesso a dados que não estão vinculados a serviços J2EE específicos. Não há dúvida de que esses objetos podem ser reutilizados entre diferentes ambientes J2EE (Web ou EJB), aplicativos independentes, ambientes de teste.
COI e AOP
O conceito básico de controlar padrões de inversão (também conhecido como intervenção de dependência) é não criar objetos, mas descrever como eles são criados. Ele não se conecta diretamente a objetos e serviços no código, mas descreve qual componente requer qual serviço no arquivo de configuração. Os contêineres (contêineres do IOC na estrutura da primavera) são responsáveis por vinculá -los.
Em um cenário típico do COI, o contêiner cria todos os objetos e define as propriedades necessárias para conectá -las, decidindo quando o método é chamado. A tabela a seguir lista um padrão de implementação do COI.
O contêiner IOC da Spring Framework é implementado usando o Tipo 2 e o Tipo 3.
Programação orientada a aspectos
A programação orientada a aspectos, AOP, é uma técnica de programação que permite que os programadores modularem os comportamentos que cortam as preocupações ou as linhas de responsabilidade divididas típicas cruzadas (como registro e gerenciamento de transações). A construção principal da AOP é o aspecto, que encapsula os comportamentos que afetam várias classes em módulos reutilizáveis.
AOP e COI são tecnologias complementares, ambas as quais usam abordagens modulares para resolver problemas complexos no desenvolvimento de aplicativos corporativos. No desenvolvimento típico orientado a objetos, podem ser necessárias declarações de registro para colocar em todos os métodos e classes Java para implementar a funcionalidade de registro. Na abordagem AOP, os serviços de log podem ser modularizados por sua vez e aplicados declarativamente a componentes que exigem logs. Obviamente, a vantagem é que as classes Java não precisam conhecer a existência de serviços de log, nem precisam considerar o código relevante. Portanto, o código do aplicativo escrito no Spring AOP é vagamente acoplado.
A funcionalidade da AOP está totalmente integrada ao contexto do gerenciamento de transações de primavera, log e vários outros recursos.
Contêiner COI
No coração do design da primavera está o pacote org.springframework.beans, que foi projetado para ser usado com componentes javabeus. Este pacote geralmente não é usado diretamente pelo usuário, mas pelo servidor o utiliza como intermediário subjacente para a maioria das outras funções. A próxima abstração mais avançada é a interface BeanFactory, que é uma implementação do padrão de design de fábrica que permite que os objetos sejam criados e recuperados pelos nomes. O Beanfactory também pode gerenciar relacionamentos entre objetos.
O Beanfactory suporta dois modelos de objetos.
□ O modelo Singleton fornece instâncias compartilhadas de objetos com nomes específicos que podem ser recuperados ao consultar. Singleton é o modelo de objeto padrão e mais comumente usado. Ideal para objetos de serviço sem estado.
□ O modelo de protótipo garante que objetos separados sejam criados cada vez que são recuperados. Os protótipos são mais adequados quando cada usuário precisa de seu próprio objeto.
O conceito de fábrica de feijões é a base da primavera como contêiner do COI. O COI muda a responsabilidade de lidar com as coisas do código do aplicativo para as estruturas. Como demonstrarei no próximo exemplo, o Spring Framework usa propriedades e dados de configuração do Javabean para indicar as dependências que devem ser definidas.
Interface do Beanfactory
Como o org.springframework.beans.factory.beanfactory é uma interface simples, ele pode ser implementado para vários métodos de armazenamento subjacentes. A definição BeanFactory mais usada é o XMLBeanFactory, que carrega feijões de acordo com as definições nos arquivos XML, conforme mostrado na Listagem 1.
Listagem 1. XmlBeanFactory
Fábrica beanfactory = new XMLBeanFactory (new FileInputSteam ("mybean.xml"));Os feijões definidos nos arquivos XML são carregados negativamente, o que significa que o próprio feijão não será inicializado até que seja necessário. Para recuperar um feijão da BeanFactory, basta chamar o método getBean () e passar no nome do feijão a ser recuperado, conforme mostrado na Listagem 2.
Listagem 2. GetBean ()
MyBean MyBean = (MyBean) Factory.getBean ("MyBean");A definição de cada feijão pode ser um pojo (definido com o nome da classe e a propriedade de inicialização de Javabean) ou um fábrica. A interface FactoryBean adiciona um nível indireto aos aplicativos criados usando a estrutura de mola.
Exemplo do COI
A maneira mais fácil de entender a inversão de controle é analisar sua aplicação prática. Ao resumir a Parte 1 da série de primavera de três partes, usei um exemplo que demonstra como injetar dependências de um aplicativo através de contêineres do IOC da primavera (em vez de construí-los em).
Eu uso o caso de uso de abrir uma conta de crédito on -line como ponto de partida. Para esta implementação, ativar uma conta de crédito exige que o usuário interaja com os seguintes serviços:
☆ Serviço de Avaliação do Nível de Crédito, Informações do Histórico de Crédito do Usuário Consulta.
☆ Serviço de link para informações remotas, insira informações do cliente, conecte as informações do cliente com cartão de crédito e informações bancárias para débito automático (se necessário).
☆ Serviço de email, enviando e -mails de usuários sobre o status do cartão de crédito.
Três interfaces
Para este exemplo, presumo que os serviços já existam e, idealmente, é integrá -los juntos de uma maneira vagamente acoplada. A lista a seguir mostra as interfaces do programa de aplicativos para os três serviços.
Listagem 3. CreditingIntInterface
interface pública CreditingRatingInterface {public boolean getUserCredithistoryInformation (ICUSTOMER ICUSTOMER);}A interface de avaliação do nível de crédito mostrada na Listagem 3 fornece informações do histórico de crédito. Requer um objeto de cliente que contenha informações do cliente. A implementação desta interface é fornecida pela classe de crédito.
Listagem 4. CreditLinkingIntInface
interface pública CreditLinkingLinkingInterface {public String geturl (); public void Seturl (String url); public void linkCreditBankAccount () lança exceção;}A interface do link de crédito conecta as informações do histórico de crédito com as informações bancárias (se necessário) e insere as informações do cartão de crédito do usuário. A interface do link de crédito é um serviço remoto e sua consulta é realizada através do método geturl (). O URL é definido pelo mecanismo de configuração de bean da estrutura da primavera, que discutirei mais adiante. A implementação desta interface é fornecida pela classe de creditação.
Listagem 5. EmailInterface
interface pública emailinterface {public void sendEmail (icustomer icustomer); public string getFromEmail (); public void SetFromEmail (string demail); public string getPassword (); public void Setpassword (string senha); public string getsTPHost () publicUtUs SetsmTpHost (string smtpHost);Espero que este artigo seja útil para a programação Java de todos.