{"id":19514594,"url":"https://github.com/jcoderpaul/hibernate_lessons","last_synced_at":"2026-05-13T18:41:35.438Z","repository":{"id":188729424,"uuid":"679307692","full_name":"JcoderPaul/Hibernate_Lessons","owner":"JcoderPaul","description":"Hibernate lessons: Primary keys, Embedded components, Mapping entity associations, HQL, Criteria API, QueryDSL, N+1, Transactions \u0026 Locks, Listeners \u0026 Interceptors, Hibernate Envers, Second Level Cache. Description in doc folders. Section cheat sheet. For memory!","archived":false,"fork":false,"pushed_at":"2023-09-19T15:07:19.000Z","size":2502,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-08T12:20:21.058Z","etag":null,"topics":["criteria-api","hibernate-envers","hibernate-jpa","hql","listeners","mapping-entities","querydsl","transactions"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JcoderPaul.png","metadata":{"files":{"readme":"ReadMe.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-16T14:48:56.000Z","updated_at":"2024-06-11T07:21:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"c71900a2-b518-4f86-820d-085802b94a52","html_url":"https://github.com/JcoderPaul/Hibernate_Lessons","commit_stats":null,"previous_names":["jcoderpaul/hibernate_lessons"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JcoderPaul%2FHibernate_Lessons","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JcoderPaul%2FHibernate_Lessons/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JcoderPaul%2FHibernate_Lessons/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JcoderPaul%2FHibernate_Lessons/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JcoderPaul","download_url":"https://codeload.github.com/JcoderPaul/Hibernate_Lessons/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240762540,"owners_count":19853500,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["criteria-api","hibernate-envers","hibernate-jpa","hql","listeners","mapping-entities","querydsl","transactions"],"created_at":"2024-11-10T23:36:58.910Z","updated_at":"2026-05-13T18:41:30.416Z","avatar_url":"https://github.com/JcoderPaul.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"### [Hibernate_part_1](https://github.com/JcoderPaul/Hibernate_Lessons/tree/master/Hibernate_part_1)\nКонфигурирование hibernate.cfg.xml, подключение и настройка зависимостей.\n\nКонфигурация SessionFactory, класс Session, понятие POJO (Entity), типы данных (пользовательские типы данных).\n\nПрименение методов: *.update(), *.saveOrUpdate(), *.del(), *.get(), *.evict(), *.clear(), *.close(), *.getStatistics().\n\nПрименение аннотаций: @Entity, @Table, @Id, @Column, @Enumerated, @Type, @TypeDef.\n\nЖизненный цикл сущности.\n\n-----------------------------------------------------------------------------------------------------------------------\n### [Hibernate_part_2](https://github.com/JcoderPaul/Hibernate_Lessons/tree/master/Hibernate_part_2)\nЛогирование процессов в приложении. Уровни логирования, настройка и подключение логеров.\n\nВстраиваемые классы, применение аннотаций: @Embeddable, @Embedded и @EmbeddedId.\n\nВарианты генерации основных ключей: Identity, Sequences, Table.\n\nМаппинг сущностей (отношения): \n- ManyToOne - аннотации @ManyToOne и @JoinColumn;\n- OneToMany - аннотации @OneToMany, @Cascade, @ToString, @EqualsAndHashCode;\n- OneToOne - аннотация @OneToOne;\n- ManyToMany - аннотация @ManyToMany, @JoinTable.\n\nПрименение аннотаций: @ElementCollection и @CollectionTable\n\nПримеры сортировки сущностей. Применение аннотаций: @OrderBy, @OrderColumn, @SortNatural, @MapKey.\n\n-----------------------------------------------------------------------------------------------------------------------\n### [Hibernate_part_3](https://github.com/JcoderPaul/Hibernate_Lessons/tree/master/Hibernate_part_3)\nПрименение родительских классов и интерфейсов при связке сущностей. \n\nАннотация @MappedSuperclass.\n\nМаппинг иерархий наследования:\n- Table_Per_Class - специфика применения аннотаций при таком варианте наследования: @Inheritance, @Entity, @Builder, \n                                                                                    @Table, @GeneratedValue, \n                                                                                    @SequenceGenerator\n- Single_Table - специфика применения аннотаций при таком варианте наследования: @Inheritance, @DiscriminatorColumn, \n                                                                                 @DiscriminatorValue\n- Joined - специфика применения аннотаций при таком варианте наследования: @Inheritance, @PrimaryKeyJoinColumn\n\n-----------------------------------------------------------------------------------------------------------------------\n### [Hibernate_part_4](https://github.com/JcoderPaul/Hibernate_Lessons/tree/master/Hibernate_part_4)\nРабота с HQL запросами, параметризованные запросы, применение позиционных и именованных параметров, применение \nнескольких именованных параметров при использовании 'JOIN', применение именованных запросов, применение \nклассических SQL запросов в Hibernate.\n\n-----------------------------------------------------------------------------------------------------------------------\n### [Hibernate_part_5](https://github.com/JcoderPaul/Hibernate_Lessons/tree/master/Hibernate_part_5)\nПрактическое применение Criteria API. \n\nСоздание объектов: CriteriaBuilder, CriteriaQuery, Root.\n\nРабота методов: *.select(), *.orderBy(), *.where(), *.avg(), *.orderBy(), *.having(). \n\nИспользование 'Tuple - картежей' в запросах.\n\n-----------------------------------------------------------------------------------------------------------------------\n### [Hibernate_part_6](https://github.com/JcoderPaul/Hibernate_Lessons/tree/master/Hibernate_part_6)\nПрактическое применение QueryDSL.\n\nСоздание менеджера сущностей JPAQuery средствами QueryDSL.\n\nSQL-одноименные, методы: *.select(), *.from(), *.orderBy(), *.where(), *.avg(), *.orderBy(), *.having().\n\nПрименение alias - псевдонимов, отличие методов *.fetch(), *.fetchOne().\n\nПрактическое использование Predicate фильтров в QueryDSL запросах. Использование списка предикатов, интерфейс Function, \nкласс ExpressionUtils библиотеки com.querydsl.core.types.\n\n-----------------------------------------------------------------------------------------------------------------------\n### [Hibernate_part_7](https://github.com/JcoderPaul/Hibernate_Lessons/tree/master/Hibernate_part_7)\nПроблема N + 1.\n\nРешение N+1 проблемы, применение аннотаций: @BatchSize, @Fetch, @FetchProfile. \n\nПрименение EntityGraph для решения проблемы N+1, применение аннотаций: @NamedEntityGraph.\n\n-----------------------------------------------------------------------------------------------------------------------\n### [Hibernate_part_8](https://github.com/JcoderPaul/Hibernate_Lessons/tree/master/Hibernate_part_8)\nУправление транзакциями в Hibernate. \n\nУровни изолированности транзакций.\n\nПрименение аннотаций: @OptimisticLocking, @Version.\n\n-----------------------------------------------------------------------------------------------------------------------\n### [Hibernate_part_9](https://github.com/JcoderPaul/Hibernate_Lessons/tree/master/Hibernate_part_9)\nПерехват транзакций в Hibernate: \n- обратные вызовы (CallBack);\n- слушатели (Listeners) обратных вызовов (CallBack Listeners) и событий (Event Listeners);\n- перехватчики (Interceptors).\n\n-----------------------------------------------------------------------------------------------------------------------\n### [Hibernate_part_10](https://github.com/JcoderPaul/Hibernate_Lessons/tree/master/Hibernate_part_10)\nHibernate Envers - аудирование записей (отслеживание изменений записей в БД).\n\nПрименение аннотации: @Audited, @NotAudited, @RevisionEntity, @RevisionNumber, @RevisionTimestamp.\n\nМашина времени в Hibernate - AuditReaderFactory.\n\n-----------------------------------------------------------------------------------------------------------------------\n### [Hibernate_part_11](https://github.com/JcoderPaul/Hibernate_Lessons/tree/master/Hibernate_part_11)\nHibernate - Second Level Cache. \n\nНастройка и подключение провайдеров кеша второго уровня.\n\nОсобенности применения аннотации: @Cache\n\nОбласти кеширования. Кеширование сущностей. Кеширование запросов. \nНастройка времени жизни сущности в кеше второго уровня.\n\n-----------------------------------------------------------------------------------------------------------------------\n### [Hibernate_practice](https://github.com/JcoderPaul/Hibernate_Lessons/tree/master/Hibernate_practice)\nПрактическая работа с Hibernate, валидирование сущностей.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcoderpaul%2Fhibernate_lessons","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjcoderpaul%2Fhibernate_lessons","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcoderpaul%2Fhibernate_lessons/lists"}