В этой статье рассказывается о классическом интервью письменном тестовом вопросе и их ссылках. Поделитесь этим для вашей ссылки, следующим образом:
1. Как работает Hibernate и почему его следует использовать?
принцип:
1. Читать и разобрать файлы конфигурации
2. Читать и проанализировать информацию о отображении и создать SessionFactory
3. Открыть сеанс
4. Создать транзакционную трансляцию
5. Операция настойчивости
6. отправить транзакции
7. Закрыть сеанс
8. Close SessstionFactory
Зачем использовать:
①. Был инкапсулирован код для баз данных JDBC, который значительно упрощал громоздкий повторяющийся код на уровне доступа к данным.
②. Hibernate - это основная структура постоянства, основанная на JDBC и является отличной реализацией ORM. Это значительно упрощает кодирующую работу слоя DAO в значительной степени
③. Hibernate использует механизм отражения Java, а не программы улучшения байт -кодов для достижения прозрачности.
④. Hibernate работает очень хорошо, потому что это легкая структура. Гибкость картирования превосходна. Он поддерживает различные реляционные базы данных, от одного до одного до многих до многих сложных отношений.
2. Как Hibernate задерживает загрузку?
①. Hibernate2 Задержка Загрузка реализация: а) объект объекта B) Сбор (сбор)
②. Hibernate3 обеспечивает задержку функции нагрузки атрибутов. Когда данные запрашивают данные, данные не существуют и память. Когда программа действительно работает на данных, объект существует и память, которая осознает отсроченную загрузку. Это сохраняет накладные расходы на память сервера и, таким образом, повышает производительность сервера.
3. Как реализовать взаимосвязь между классами в Hibernate? (например, отношения от одного ко многим, многие-многие)
Отношения между классами в основном отражаются в отношениях между таблицами. Они работают на объектах в городе. Наша программа отображает все таблицы и классы вместе, и они проходят через много-один, один ко многим, многие ко многим и многие ко многим в файле конфигурации.
4. Давайте поговорим о механизме кеша Hibernate
①. Внутренний кэш также называется кэшем первого уровня в Hibernate, который принадлежит кешу на уровне приложения
②. Кэш 2 уровня:
а) Приложение и кеш
б) Распределенные условия кэша: данные не будут изменены третьими сторонами, размер данных находится в пределах приемлемого диапазона, частота обновления данных низкая, система часто используется, а также некритические данные
в) реализация стороннего кеша
5. Метод гибернатного запроса
SQL, критерии, композиция объекта
HQL:
1. Атрибут запрос
2. Запрос параметра, названный запрос параметра
3. Связанный запрос
4. Запрос страниц
5. Статистические функции
6. Как оптимизировать Hibernate?
①. Используйте двунаправленную ассоциацию от одного ко многим, а не один ко многим один ко многим ②. Используйте гибко от одного ко многим ассоциации от одного ко многим ③. Не используйте один к одному, используйте вместо этого ④. Настройте кэш объектов, а не используйте кеш SET ⑤. Используйте сумку для коллекций от одного ко многим и используйте набор для множества коллекций.
⑥. Используйте явный полиморфизм в классах наследования. Должно быть меньше полей стола, и не бойтесь многих табличных ассоциаций. Есть вторичный кэш, чтобы поддержать вас.
7. Рабочий механизм стойки? Зачем использовать стойки?
Рабочий механизм:
Рабочий процесс стойки:
Инициализация Actionservlet будет загружена при запуске веб -приложения. Действия вервлет будут загружены из
Информация о конфигурации чтения из файла struts-config.xml и хранить их в различных объектах конфигурации
Когда ActionServlet получит запрос клиента, будет выполнен следующий процесс.
-(1) Получить экземпляр Actionmapping, который соответствует запросу пользователя. Если его не существует, он возвращает неверную информацию о пути запроса;
-(2) Если экземпляр ActionForm не существует, создайте объект ActionForm и сохраните данные формы, представленные клиентом в объект ActionForm;
-(3) Решите, необходима ли проверка формы на основе информации о конфигурации. Если требуется проверка, вызов Actionform () метод Validate ();
-(4) Если метод ActionForm Validate () возвращает NULL или возвращает объект Actuiberrors, который не содержит ActionMessage, это означает, что проверка формы является успешной;
-(5) ActionServlet решает, какое действие для пересылки запроса на основе информации о отображении, содержащейся в действии. Если соответствующий экземпляр действия не существует, сначала создайте этот экземпляр, а затем вызовите метод действия execute ();
-(6) Метод действия execute () execute () возвращает объект ActionForward, а ActionServlet направляет запрос клиента в компонент JSP, на который указывает объект ActionForward;
-(7) объект ActionForward указывает на компонент JSP для генерации динамической веб -страницы и возвращает ее клиенту;
Зачем использовать:
Появление технологий JSP, сервиса и Javabean предоставляет нам возможность создания мощных предприятий. Но система, построенная с этими технологиями, очень хаотична, поэтому нам нужно правило и правило для организации этих технологий. Это рамка, и расписания возникли.
Приложения, разработанные на основе стойки, состоят из трех типов компонентов: компоненты контроллера, компоненты модели и компоненты просмотра
8. Как подтверждена структура проверки Struts?
Настройте конкретные проведения ошибок в файле конфигурации стойки, а затем вызовите метод Validate () в формах.
9. Давайте поговорим о моделях дизайна Struts
Режим MVC: ActionSvler загружается и инициализируется при запуске веб -приложения. Когда пользователь подает форму, создается и заполняется настроенный объект Actionform в соответствующих данных формы. Actionservler решает, необходима ли проверка формы на основе настройки, настроенных файлом struts-config.xml. При необходимости вызовите проверку Actionform () проверку и выберите, в какое действие отправит запрос. Если действие не существует, ActionServlet сначала создаст этот объект, а затем вызовет метод действия execute (). Execute () получает данные из объекта ActionForm, завершает бизнес -логику и возвращает объект ActionForward. ActionServlet пересылает запрос клиента в компонент JSP, указанный объектом ActionForward. JSP, указанный объектом ActionForward, генерирует динамическую веб -страницу и возвращает ее клиенту.
10. Весенний рабочий механизм и почему?
①.spring MVC Пожалуйста, отправьте все запросы в диспетчерервлет, который поручит другие модули системы заявки нести ответственность за фактическую обработку запроса.
②.dispatcherservlet Querys One или несколько ручных приложений и находит контроллер, который обрабатывает запрос.
③.DispatcherServlet Пожалуйста, отправьте запрос на целевой контроллер
④. После того, как контроллер выполнит обработку бизнес -логики, он вернет модель и.
⑤.dispathcher Querys One или несколько ViewResolver View Resoluverts и находит объект представления, указанный объектом ModelAndView ⑥. Объект представления отвечает за рендеринг и возврат его клиенту.
Зачем использовать:
{AOP позволяет разработчикам создавать не-поведенческие проблемы, называемые перекрестными проблемами и вставлять их в код приложения. После использования AOP общественные услуги (такие как журналы, настойчивость, транзакции и т. Д.) Могут быть разбиты на аспекты и применены к объектам домена без увеличения сложности объектной модели объектов домена.
МОК позволяет создавать среду приложения, в которой могут быть построены объекты, а затем передавать свои совместные объекты в эти объекты. Как указывает слово «инверсия», МОК похож на обратный JNDI. Без использования куча абстрактных фабрик, локаторов обслуживания, синглтонов и прямой конструкции, каждый объект построен с его совместными объектами. Следовательно, сотрудничатель управляется контейнером.
Весна - это контейнер МОК, даже если это структура AOP. Лучшее в Spring - это поможет вам заменить объекты. С помощью Spring просто добавьте зависимости (объекты сотрудничества), используя свойства Javabean и файлы конфигурации. Совместные объекты с похожими интерфейсами могут быть легко заменены при необходимости. }
Пружинная структура представляет собой иерархическую архитектуру, состоящую из 7 четко определенных модулей. Весенние модули строятся в верхней части основных контейнеров, которые определяют, как создаются, настроены и управляются бобы.
Каждый модуль (или компонент), который составляет основу пружины, может существовать в одиночку или реализовать в сочетании с одним или несколькими другими модулями. Функции каждого модуля следующие:
☆ Core Container: Core Container обеспечивает основные функции Spring Framework. Основным компонентом основного контейнера является BeanFactory, который является реализацией заводской шаблона. BeanFactory использует режим инверсии управления (IOC), чтобы отделить спецификации конфигурации и зависимости приложения от фактического кода приложения.
Context Spring: контекст пружины - это файл конфигурации, который предоставляет контекстную информацию для Spring Framework. Весенний контекст включает в себя корпоративные услуги, такие как JNDI, EJB, электронная почта, интернационализация, возможности планирования контрольной суммы.
☆ Spring AOP: Через функцию управления конфигурацией модуль Spring AOP напрямую интегрирует функции программирования, ориентированные на аспект, в структуру пружины. Следовательно, легко сделать любой объект, управляемый Spring Framework Support AOP. Spring AOP-модуль предоставляет услуги управления транзакциями для объектов в приложениях на основе Spring. Используя Spring AOP, декларативное управление транзакциями может быть интегрировано в приложение, не полагаясь на компоненты EJB.
☆ Spring DAO: уровень абстракции JDBC DAO обеспечивает значимую иерархию исключения, которую можно использовать для управления обработкой исключений и сообщений об ошибках, выброшенных различными поставщиками баз данных. Иерархия исключений упрощает обработку ошибок и значительно уменьшает количество кода исключений, которое необходимо записано (например, открытие и закрытие соединений). Исключительные исключения, ориентированные на JDBC, следуют общей иерархии исключений DAO.
☆ Spring ORM: Spring Framework вводит несколько структур ORM, что обеспечивает тем самым инструменты взаимоотношения ORM, включая карту JDO, Hibernate и Ibatis SQL. Все это следует за общей транзакцией весны и иерархии исключений DAO.
☆ Spring Web Module: модуль веб-контекста построен в модуле контекста приложения и предоставляет контекст для веб-приложений. Следовательно, весенняя структура поддерживает интеграцию со стойками Джакарты. Веб-модуль также упрощает работу по обработке запросов с несколькими частями и параметрами запроса привязки к объектам домена.
☆ Spring MVC Framework: Framework MVC является полностью функциональной реализацией MVC для создания веб -приложений. Благодаря интерфейсу политики, структура MVC становится высоко настраиваемой, а в MVC находится большое количество технологий просмотра, включая JSP, скорость, плитки, ITEXT и POI.
Возможности Spring Framework могут использоваться на любом сервере J2EE, и большинство из них подходят для неуправляемых сред. Основной точкой пружины является: поддержка многоразовых объектов бизнеса и доступа к данным, которые не связаны с конкретными услугами J2EE. Нет сомнений в том, что такие объекты могут быть повторно использованы между различными средами J2EE (Web или EJB), автономными приложениями, средами для тестирования.
МОК и AOP
Основная концепция контроля моделей инверсии (также известных как вмешательство в зависимости) заключается в том, чтобы не создавать объекты, но описать, как они создаются. Он напрямую не подключается к объектам и службам в коде, но описывает, какой компонент требует, какая служба в файле конфигурации. Контейнеры (контейнеры IOC в Spring Framework) несут ответственность за связь их вместе.
В типичном сценарии МОК контейнер создает все объекты и устанавливает необходимые свойства, чтобы соединить их вместе, решая, когда называется метод. В следующей таблице перечислены шаблон реализации МОК.
Контейнер IOC Spring Framework реализован с использованием типа 2 и типа 3.
Аспективное программирование
Аспективное программирование, AOP, является методом программирования, которая позволяет программистам модулизировать поведение, которое пересекает проблемы или типичные делящие линии ответственности (такие как ведение ведения и управление транзакциями). Основной конструкцией AOP является аспект, который инкапсулирует то поведение, которое влияет на множественные классы в многоразовые модули.
AOP и IOC являются дополнительными технологиями, которые используют модульные подходы для решения сложных проблем при разработке предприятия. В типичной объектно-ориентированной разработке операторы регистрации могут потребоваться поместить во всех методах и классах Java для реализации функциональности журнала. В подходе AOP службы журнала могут быть модулизованы по очереди и применять объявление к компонентам, которые требуют журналов. Конечно, преимущество заключается в том, что классы Java не должны знать существование услуг журнала, и им не нужно учитывать соответствующий код. Поэтому код приложения, написанный в Spring AOP, слабо связан.
Функциональность AOP полностью интегрирована в контекст управления пружинными транзакциями, ведения журнала и различных других функций.
Контейнер IOC
В основе дизайна Spring лежит пакет org.springframework.beans, который предназначен для использования с компонентами Javabean. Этот пакет обычно используется непосредственно пользователем, а сервером, использующим его в качестве базового посредника для большинства других функций. Следующей наиболее продвинутой абстракцией является интерфейс BeanFactory, который представляет собой реализацию заводского шаблона проектирования, который позволяет создавать и извлекать объекты и имен. BeanFactory также может управлять отношениями между объектами.
BeanFactory поддерживает две модели объекта.
□ Модель Singleton предоставляет общие экземпляры объектов с конкретными именами, которые можно извлечь при запросе. Singleton - это по умолчанию и наиболее часто используемая объектная модель. Идеально подходит для объектов обслуживания без сохранения состояния.
□ Прототип модель гарантирует, что отдельные объекты создаются каждый раз, когда они получены. Прототипы лучше всего подходят, когда каждому пользователю нужен свой собственный объект.
Концепция фабрики бобов является основой весны в качестве контейнера IOC. МОК сменяет ответственность за обработку вещей от кода приложения к фреймворкам. Как я буду демонстрировать в следующем примере, Spring Framework использует свойства Javabean и данные конфигурации, чтобы указать зависимости, которые должны быть установлены.
Beanfactory Interface
Поскольку org.springframework.beans.factory.beanfactory является простым интерфейсом, он может быть реализован для различных методов хранения. Наиболее часто используемым определением BeanFactory является XMLBeanFactory, которое загружает бобы в соответствии с определениями в файлах XML, как показано в списке 1.
Список 1. Xmlbeanfactory
Beanfactory Factory = new XmlbeanFactory (new FileInputSteam ("mybean.xml"));Бобы, определенные в файлах XML, загружаются негативно, что означает, что сам фасоль не будет инициализирован, пока он не будет необходим. Чтобы забрать фасоль из BeanFactory, просто позвоните в метод GetBean () и пропустите имя боба, которое будет получено, как показано в списке 2.
Листинг 2. getBean ()
Mybean mybean = (mybean) factory.getbean ("mybean");Определение каждого боба может быть либо Pojo (определяется с именем класса и свойством инициализации Javabean), либо фабрикой. Интерфейс Factorybean добавляет косвенный уровень к приложениям, созданным с использованием Spring Framework.
Пример
Самый простой способ понять инверсию контроля - это взглянуть на его практическое применение. В соответствии с суммированием части 1 серии Spring с тремя частями я использовал пример, который демонстрирует, как вводить зависимости приложения через весенние контейнеры IOC (а не их строительство).
Я использую использование случая открытия онлайн -учетной записи в качестве отправной точки. Для этой реализации включение кредитной учетной записи требует, чтобы пользователь взаимодействовал со следующими службами:
☆ Служба оценки кредитного уровня, Информация о кредитной истории пользователя запроса.
☆ Служба удаленной информации о информации, вставьте информацию о клиентах, подключите информацию о клиентах с помощью информации о кредитной карте и банковской информации для автоматического дебета (если требуется).
☆ Служба электронной почты, отправляя пользователям электронные письма о статусе кредитной карты.
Три интерфейса
В этом примере я предполагаю, что услуги уже существуют, и в идеале они должны интегрировать их вместе свободно связанными. В следующем списке показаны интерфейсы прикладной программы для трех служб.
Листинг 3. CreditTrationInterface
Общедоступный интерфейс CreditRatingInterface {public Boolean getUserCredithistoryinformation (icustomer icustomer);}Интерфейс оценки кредитного уровня, показанный в списке 3, содержит информацию о кредитной истории. Это требует объекта клиента, содержащего информацию о клиенте. Реализация этого интерфейса обеспечивается классом кредита.
Листинг 4. CreditLindingInterface
Публичный интерфейс CreditLindingInterface {public String getUrl (); public void seturl (string url); public void linkcreditbankaccount () исключает исключение;}Интерфейс кредитной ссылки соединяет информацию о кредитной истории с информацией о банке (если требуется) и вставляет информацию об кредитной карте пользователя. Интерфейс кредитной ссылки является удаленным сервисом, а его запрос выполняется с помощью метода geturl (). URL -адрес устанавливается механизмом конфигурации бобов Spring Framework, который я буду обсуждать позже. Реализация этого интерфейса обеспечивается классом кредита.
Листинг 5. EmailInterface
публичный интерфейс emailInterface {public void SendEmail (iCustomer icustomer); public String getFromeMail (); public void setFromail (String fromemail); public String getPassword (); public void setPassword (String password); public String getSmTphost (); public void setSmtphost (строка smtphost string); public getUser (); id setsmtpost string string);Я надеюсь, что эта статья будет полезна для всех Java Programming.