• ,

Наследование в Hibernate: моя первая публикация на Хабрахабре

Доброго дня всем коллегам-джаварашевцам!

Согласно опросу, проведенному сайтом «Мой круг», примерно половина работодателей так или иначе обращает внимание на «сторонние увлечения» соискателя, а именно на участие в профильных IT-сообществах.

По результатам опроса авторы его авторы уверенно заявляют, что участие в них вполне может помочь вашей карьере.

Наиболее заметными сообществами, на участие в которых обращают внимание российские работодатели, являются StackOverflow, GitHib и Хабрахабр.

Я работаю Java-developer'ом чуть более 4-х месяцев, и пока первоначальный «запал» не окончательно растерян, тоже решил приучить себя не деградировать в свободное от работы время, а заниматься чем-нибудь полезным:) Выбора «куда идти», в общем-то, не было: GitHub — это в основном место для opersource-проектов, где неопытному разработчику чаще всего нечего делать; формат StackOverflow мне просто не особо нравится (хотя «по долгу службы» пользуюсь им, конечно, регулярно). Собственно, поэтому мой выбор пал на Хабр — крупнейший в стране коллективный IT-блог.

Статья посвящена реализации наследования в библиотеке Hibernate.
Поскольку хибер для java-разработчика — практически must-have, думаю, она будет интересна здешним читателям:)

habrahabr.ru/post/337488

Приятного прочтения!

Тестовое задание: Управление пользователями (Junior Java Developer, стажёр)

Необходимо разработать веб-приложение, позволяющее управлять пользователями
(создавать, редактировать, просматривать список и детали, удалять)

Функциональные требования к веб-приложению:
  1. Наличие RESTful интерфейса;
  2. Поддержка операций управления (создания, чтения, редактирования и удаления) пользователями.
    Пользователь определяется следующими значениями:
    • Имя
    • Фамилия
    • Дата рождения
    • Логин
    • Пароль
    • Поле ввода “О себе”
    • Адрес проживания
  3. Наличие пользовательского WEB-интерфейса

Нефункциональные требования:
  • JEE стек технологий
  • Фреймворки, библиотеки: Hibernate, Spring
  • Система хранения данных: PostgreSQL
  • Код приложения необходимо снабдить комментариями
  • Приложение должно собираться при помощи maven без установки или настройки каких либо дополнительных компонент;
  • Архив с результатом тестового задания должен содержать текстовый файл readme.txt с инструкцией по сборке, настройке, конфигурированию и развертыванию приложения (если необходимо).

Посоветуйте обще-краткие учебные материалы по Spring, Hibernate, Java Script, AJAX, Maven, Tomcat

Добрый день, уважаемые джаварашевцы и джаварашатессы!
В целях подготовки к стажировке знающие джаварашевцы настоятельно советуют «пройдите хотя бы маленькие обучалки в интернете» по следующим технологиям: Spring, Hibernate, Java Script, AJAX, Maven, Tomcat.

Прошу подсказать эти самые «маленькие обучалки». Я так понимаю, что имеются в виду поверхностные материалы, дающие общее представление о данных технологиях. Формат можно подсказывать любой: статьи, небольшие книжки, видео-курсы, онлайн-курсы и т.д.

С уважением,
Зеленая лягушка.

Дополнение. За рекомендацию «не кратких», а обстоятельных и пользующихся заслуженной славой ресурсов\книг по заявленным темам тоже буду благодарен.

Вопросы на собеседование Hibernate

Данная статья является переводом и улучшением зарубежных статей (список ресурсов перечислен в конце статьи). Ответы на некоторые вопросы расширены, представлены ссылки на сторонние ресурсы которые содержат ответы которые могут возникнуть в процессе чтения.

1) Что такое Hibernate?

Это фреймворк для объектно-реляционного отображения сущностей в традиционные реляционные базу данных.
Основные возможности фреймворка:
1) Автоматическая генерация и обновление таблиц в базах данных;
2) Поскольку основные запросы к базе данных (сохранение, обновление, удаление и поиск) представлены как методы фрейморка, то значительно сокращается код, который пишется разработчиком;
3) Обеспечивает использование SQL подобного языка (HQL — hibernate query language). Запросы HQL могут быть записаны рядом объектами данных (POJO классы подготовленные для работы с базой данных).

2) Как Hibernate помогает в программировании?

Hibernate реализует ряд фичь которые значительно упрощают работу разработчика.
— Одной из таких фичь является то, что hibernate позволяет разработчику избежать написания большинства SQL запросов (они уже реализованы, вам надо просто использовать методы которые предоставляет фреймворк).
— Под бортом у Hibernate есть куча полезных инструментов которые значительно ускоряют работу приложения, самыми примечательными из них являются двухуровневое кэширования и тонкие настройки lazy и fetch изъятия.
— Сам генерирует таблицы в базу данных.

3) Способы конфигурации работы с Hibernate.

Существует четыре способа конфигурации работы с Hibernate:
— используя аннотации;
— hibernate.cfg.xml;
— hibernate.properties;
— persistence.xml.
Самый частый способ конфигурации: через аннотации и файл persistence.xml, что касается файлов hibernate.properties и hibernate.cfg.xml, то hibernate.cfg.xml главнее (если в приложение есть оба файла, то принимаются настройки из файла hibernate.cfg.xml). Конфигурация аннотациями, хоть и удобна, но не всегда возможна, к примеру, если для разных баз данных или для разных ситуаций вы хотите иметь разные конфигурацию сущностей, то следует использовать xml файлы конфигураций.

4) Какие ключевые интерфейсы использует Hibernate?

Существует пять ключевых интерфейсов которые используются в каждом приложении связанном с Hibernate:
— Session interface;
— SessionFactory interface;
— Configuration interface;
— Transaction interface;
— Query and Criteria interfaces.

5) Какая роль интерфейса Session в Hibernate?

Session — это основной интерфейс, который отвечает за связь с базой данных. Так же, он помогает создавать объекты запросов для получение персистентных объектов. (персистентный объект — объект который уже находится в базе данных; объект запроса — объект который получается когда мы получаем результат запроса в базу данных, именно с ним работает приложение). Обьект Session можно получить из SessionFactory:
Session session = sessionFactory.openSession();
Роль интерфейса Session:
— является оберткой для jdbc подключения к базе данных; (https://ru.wikipedia.org/wiki/Java_Database_Connectiv..)
— является фабрикой для транзакций (согласно официальной документации transaction — аllows the application to define units of work, что, по сути, означает что транзакция определяет границы операций связанных с базой данных).
— является хранителем обязательного кэша первого уровня.

6) Какая роль интерфейса SessionFactory в Hibernate?

Именно из объекта SessionFactory мы получаем объекты типа Session. На все приложение существует только одна SessionFactory и она инициализируеться вместе со стартом приложения. SessionFactory кэширует мета-дату и SQL запросы которые часто используются приложением во время работы. Так же оно кэширует информацию которая была получена в одной из транзакций и может быть использована и в других транзакциях.
Обьект SessionFactory можно получить следующим обращением:
SessionFactory sessionFactory = configuration.buildSessionFactory();

7) Какие типы коллекций представлены в Hibernate?

Bag, Set, List, Map, Array.

8) Что собой являет коллекция типа Bag и зачем она используется?

Своей реализации тип коллекции Bag очень напоминает Set, разница состоит в том, что Bag может хранить повторяющиеся значения. Bag хранит непроиндексированный список элементов. Большинство таблиц в базе данных имеют индексы отображающие положение элемента данных один относительно другого, данные индексы имеют представление в таблице в виде отдельной колонки. При объектно-реляционном маппинге, значения колонки индексов мапится на индекс в Array, на индекс в List или на key в Map. Если вам надо получить коллекцию объектов не содержащих данные индексы, то вы можете воспользоваться коллекциями типа Bag или Set (коллекции содержат данные в неотсортированном виде, но могут быть отсортированы согласно запросу).

9) Какая разница в работе методов load(); и get();?

Метод load(); обычно используется когда в не уверен что запрашиваемый объект уже находится в базе данных. Если объект не найден, то метод кидает исключение Если объект найден — метод возвращает прокси объект, который является ссылкой на объект находящийся в базе данных (запрос в базу данных еще не был осуществлен, своего рода lazy изъятие), непосредственный запрос к базе данных когда мы непосредственно обращаемся к необходимому объекту через прокси объект.
Метод get(); используется тогда, вы на 100 процентов не уверены есть ли запрашиваемый объект в базе данных. В случае обращение к несуществующему объекту, метод get(); вернет null. В случае нахождения объект, метод get(); вернет сам объект и запрос в базу данных будет произведен немедленно.

10) Что такое Lazy fetching(изъятие) в Hibernate?

Тип изьятия Lazy, в Hibernate, связан с листовыми(дочерними) сущностями и определяют политику совместного изъятия, если идет запрос на изъятие сущности родителя.
Простой пример:
Есть сущность Дом. Он хранит информацию о своем номере, улице, количество квартир и информацию о семьях которые живут в квартирах, эти семьи формируют дочернюю сущность относительно сущности Дом. Когда мы запрашиваем информацию о Доме, нам может быть совершенно ненужным знать информацию семьях которые в нем проживают, тут нам на помощь приходит lazy(ленивое) изъятие(fetching) которая позволяет сконфигурировать сущность Дом, чтобы информацию о семьях подавалась только по востребованию, это значительно облачает запрос и ускоряет работу приложения.

©dev-bay

Вакансии java в офис и JS (фронтенд) удаленка в Москве

В поисках java-разработчика (фуллтайм) и frontend-разработчика (на удаленке).
Пишите на

elobanova@polygant.ru


1) Java (в офис)
Требования: Java, Spring, Hibernate, Maven, jQuery

Задачи:
— доработка по SEO,
— интеграция проекта (API),
— разработка мобильной версии,
— модификация поиска.

Условия:
— г.Москва м. Авиамоторная
— трудоустройство по ТК РФ;
— график работы: 5/2;
— уровень заработной платы обсуждается с успешными кандидатами на собеседовании;
— возможность карьерного и профессионального развития;
— молодой и дружный коллектив;
— идеальные условия труда

2) Frontend разработчик (на удаленке)
Требования:
— отличное знание Javascript, jQuery;
— знание HTML5 и CSS3, умение качественно, валидно, и кроссбраузерно верстать, соблюдать стандарты, и внутренние соглашения;
— понимание и опыт работы с адаптивным дизайном;
— опыт работы в frontend разработке не менее 2 лет;

Задачи:
— верстка страниц в десктопных и мобильных версиях;
— внесение изменений в существующие сайты.

Условия: по договоренности

Пишите
elobanova@polygant.ru
+7 495 215-54-40
Лобанова Екатерина

Многопользовательская консольная игра на java

Всем привет, давно уже дописал игру, всё никак не доходили руки до написания статьи, она является логическим продолжение вот этой писулины

Если вы пока еще не пробовали делать что-либо кроме задач JavaRush, то знакомство с игрой будет как раз именно тем, с чего нужно будет начать подготовку к тестовым заданиям реального проекта, в котором я настоятельно рекомендую поучаствовать каждому. Да и вообще пора уже перестать быть сферическим программистом в вакууме и начать изучать что нибудь за пределами java-core.
  • ,

Тренинг TopJava

Не так давно я проходил тренинг TopJava с 19 августа по 23 сентября у Кислина. Тренинг был в форме вебинара на платформе Adobe Connect, т.е. создается видеоконференция (аудио + видео рабочего стола тренера), в которой участвуют сам тренер и обучающиеся. После каждого занятия высылается ссылочка на запись занятия (которое можно скачать при необходимости).

Немножко предыстории. Когда мне в первый раз дали серьезное тестовое задание на неделю — сделать программу для учета метрологического оборудования (описали требования: Swing + Hibernate ORM + Postgres и проект должен быть в Eclipse), тогда я даже не смог запустить hibernate, не говоря уже о том, что надо связать Hibernate с Postgres. Моя ошибка была в том, что я не обращался к видео, а хотел сделать всё сам и только через текстовые туториалы — дело не вышло.
  • ,

Hibernate, Spring, Servlet

Просматривая вакансии на Java-разработчика, заметил такую вещь: в большинстве объявлений требуется знание Hibernate, Spring, Spring MVC, Servlet. Можете ли порекомендовать какие-нибудь книги или материалы по этим технологиям для начала обучения?
  • ,

DynamicProxy (новые уровни)

DynamicProxy

Во время прохождения новых уровней вы научитесь шпионить за другими объектами, перехватывать вызовы их методов и подменять их своими.

Эта технология многократно усилила мощь, известность и простоту таких фреймворков как Hibernate, Spring, и сотен других. javarush.ru/