JavaRush /Java Blog /Random-TK /Gibernate söhbetdeşlik soraglary
Dr-JohnZoidberg
Dereje
Киев

Gibernate söhbetdeşlik soraglary

Toparda çap edildi
Bu makala daşary ýurt makalalarynyň terjimesi we kämilleşdirilmegi (makalalaryň ahyrynda çeşmeleriň sanawy görkezilýär). Käbir soraglara jogaplar giňeldilýär, okamak döwründe ýüze çykyp biljek jogaplary öz içine alýan üçünji tarap çeşmelerine baglanyşyklar berilýär. 1) Gibernate näme? Bu subýektleriň adaty baglanyşyk bazalaryna obýekt-baglanyşyk kartasy üçin çarçuwadyr. Çarçuwanyň esasy aýratynlyklary: 1) Maglumatlar bazasyndaky tablisalary awtomatiki öndürmek we täzelemek; 2) Maglumat bazasyna esasy talaplar (tygşytlamak, täzelemek, pozmak we gözlemek) çarçuwanyň usullary hökmünde hödürlenýändigi sebäpli, işläp düzüjiniň ýazýan kody ep-esli azalýar; 3) SQL meňzeş diliň ulanylmagyny üpjün edýär (HQL - gibernate talap dili). HQL talaplary maglumat obýektleri bilen bilelikde ýazylyp bilner (Maglumat bazasy bilen işlemek üçin taýýarlanan POJO synplary). 2) Gibernasiýa etmeli помогает в программировании? Hibernate реализует ряд фичь которые значительно упрощают работу разработчика. — Одной из таких фичь является то, что hibernate позволяет разработчику избежать написания большинства SQL requestов (они уже реализованы , вам надо просто использовать методы которые предоставляет фреймворк). — Под бортом у Hibernate есть куча полезных инструментов которые значительно ускоряют работу applications, самыми примечательными из них являются двухуровневое кэширования и тонкие настройки lazy и fetch изъятия. — Сам генерирует таблицы в базу данных. 3) Способы конфигурации работы с Hibernate. Существует четыре способа конфигурации работы с Hibernate : — используя аннотации; — hibernate.cfg.xml; — hibernate.properties; — persistence.xml. Самый частый способ конфигурации : через аннотации и файл persistence.xml, что касается файлов hibernate.properties и hibernate.cfg.xml, то hibernate.cfg.xml главнее (если в приложение есть оба file, то принимаются настройки из file hibernate.cfg.xml). Конфигурация annotationми, хоть и удобна, но не всегда возможна, к примеру, если для разных баз данных or для разных ситуаций вы хотите иметь разные конфигурацию сущностей, то следует использовать xml файлы конфигураций. 4) Какие ключевые интерфейсы использует Hibernate? Существует пять ключевых интерфейсов которые используются в каждом приложении связанном с Hibernate: — Session interface; — SessionFactory interface; — Configuration interface; — Transaction interface; — Query and Criteria interfaces. 5) Какая роль интерфейса Session в Hibernate? Session — это основной интерфейс, который отвечает за связь с базой данных. Так же, он помогает создавать an objectы requestов для получение персистентных an objectов. (персистентный an object — an object который уже находится в базе данных; an object requestа — an object который получается когда мы получаем результат requestа в базу данных, именно с ним работает приложение). Обьект Session можно получить из SessionFactory : Session session = sessionFactory.openSession(); Роль интерфейса Session: — является оберткой для jdbc подключения к базе данных; (https://ru.wikipedia.org/wiki/Java_Database_Connectiv..) — является фабрикой для транзакций (согласно официальной documentации transaction — аllows the application to define units of work, что , по сути, означает что транзакция определяет границы операций связанных с базой данных). — является хранителем обязательного кэша первого уровня. 6) Какая роль интерфейса SessionFactory в Hibernate? Именно из an object SessionFactory мы получаем an objectы типа Session. На все приложение существует только одна SessionFactory и она инициализируеться вместе со стартом applications. SessionFactory кэширует мета-date и SQL requestы которые часто используются приложением во время работы. Так же оно кэширует информацию которая была получена в одной из транзакций и может быть использована и в других транзакциях. Обьект SessionFactory можно получить следующим обращением: SessionFactory sessionFactory = configuration.buildSessionFactory(); 7) Какие типы коллекций представлены в Hibernate? Bag, Set, List, Map, Array. 8) What собой являет коллекция типа Bag и зачем она используется? Своей реализации тип коллекции Bag очень напоминает Set, разница состоит в том, что Bag может хранить повторяющиеся значения. Bag хранит непроиндексированный список элементов. Большинство таблиц в базе данных имеют индексы отображающие положение element данных один относительно другого, данные индексы имеют представление в таблице в виде отдельной columns. При an objectно-реляционном маппинге, значения columns индексов мапится на индекс в Array, на индекс в List or на key в Map. Если вам надо получить коллекцию an objectов не содержащих данные индексы, то вы можете воспользоваться коллекциями типа Bag or Set (коллекции содержат данные в неотсортированном виде, но могут быть отсортированы согласно requestу). 9) Какая разница в работе методов load(); и get();? Метод load(); обычно используется когда в не уверен что запрашиваемый an object уже находится в базе данных. Если an object не найден, то метод кидает исключение Если an object найден — метод возвращает прокси an object, который является ссылкой на an object находящийся в базе данных (request в базу данных еще не был осуществлен, своего рода lazy изъятие), непосредственный request к базе данных когда мы непосредственно обращаемся к необходимому an objectу через прокси an object. Метод get(); используется тогда, вы на 100 процентов не уверены есть ли запрашиваемый an object в базе данных. В случае обращение к несуществующему an objectу, метод get(); вернет null. В случае нахождения an object, метод get(); вернет сам an object и request в базу данных будет произведен немедленно. 10) What такое Lazy fetching(изъятие) в Hibernate? Тип изьятия Lazy, в Hibernate, связан с листовыми(дочерними) сущностями и определяют политику совместного изъятия, если идет request на изъятие сущности родителя. Простой пример: Есть сущность Дом. Он хранит информацию о своем номере, улице, количество квартир и информацию о семьях которые живут в квартирах, эти семьи формируют дочернюю сущность относительно сущности Дом. Когда мы запрашиваем информацию о Доме, нам может быть совершенно ненужным знать информацию семьях которые в нем проживают, тут нам на помощь приходит lazy(ленивое) изъятие(fetching) которая позволяет сконфигурировать сущность Дом, чтобы информацию о семьях подавалась только по востребованию, это значительно облачает request и ускоряет работу applications. ©dev-bay
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION