Java - это backend язык программирования, следовательно, разработчиком всегда приходится работать с различными реляционными и не реляционными системами управления базами данных. На курсе по JDBC мы прошли материал, который позволяет нам без подключения дополнительных библиотек, чисто на Java Core работать с реляционными СУБД. Но мы видели, как сложно и единообразно писать маппинг сущностей из SQL запросов в базу данных и, наоборот, когда мы пытаемся сохранить какой-то Java объект в базу данных.
Другими словами говоря, мы много занимаемся рутинной работой для ORM (Object Relational Mapping). Более того, единообразен и подход в выполнении CRUD (Create Read Update Delete) операций для всех сущностей. И на помощь нам приходит один из самых актуальных и широко используемых в Java ORM фреймворков - Hibernate. На этом курсе мы изучим, что такое ORM framework, что такое JPA спецификация и как к ней относится Hibernate. Узнаем все основные маппинги сущностей, как реализованы реляционные связи в виде Java аннотаций. Что такое SessionFactory и Session, и как найти соответствие им в JDBC. Мы полностью пройдем жизненный цикл сущностей, узнаем их состояния и почему все вертится вокруг PersistenceContext. Изучим два уровня кеширования в Hibernate, и как решить N+1 проблему! Реализуем собственный слой DAO (и в чем его отличие от слоя Repository), который поможет нам разобраться с тонкостями работы транзакций и зачем использовать DTO при работе с Hibernate. На каждом занятии мы будем заходить в исходный код, чтобы понимать, как все устроено изнутри!
Посмотреть больше
Это пробный урок. Оформите подписку, чтобы получить доступ ко всем материалам курса. Премиум
Урок 1.
00:06:55
Введение
Урок 2.
00:07:22
Установка программного обеспечения
Урок 3.
00:08:43
Настройка проекта
Урок 4.
00:10:41
Конфигурация SessionFactory
Урок 5.
00:14:40
Entity
Урок 6.
00:11:48
Класс Session
Урок 7.
00:09:46
Type converters
Урок 8.
00:07:12
Custom attribute converter
Урок 9.
00:08:32
Custom user type
Урок 10.
00:10:20
Методы update/delete/get
Урок 11.
00:05:38
EntityPersister
Урок 12.
00:09:36
First Level Cache
Урок 13.
00:04:16
Entity lifecycle. Теория
Урок 14.
00:10:39
Entity lifecycle. Практика
Урок 15.
00:05:13
Java Persistence API (JPA)
Урок 16.
00:08:04
Logging. Теория
Урок 17.
00:11:42
Logging. Файл log4j.xml
Урок 18.
00:07:48
Logging. File appender
Урок 19.
00:07:06
Embedded components
Урок 20.
00:16:15
Primary keys
Урок 21.
00:07:12
EmbeddedId
Урок 22.
00:07:15
Other basic annotations
Урок 23.
00:11:17
ManyToOne
Урок 24.
00:06:23
Fetch types
Урок 25.
00:14:05
Hibernate Proxy
Урок 26.
00:07:36
Cascade types
Урок 27.
00:08:44
OneToMany
Урок 28.
00:10:28
Cascade types with collections
Урок 29.
00:03:54
Entity equals and hashCode
Урок 30.
00:06:47
PersistentCollection
Урок 31.
00:06:45
LazyInitializationException
Урок 32.
00:04:50
OrphanRemoval
Урок 33.
00:11:41
OneToOne. Primary key
Урок 34.
00:08:45
OneToOne. Foreign key
Урок 35.
00:13:46
ManyToMany
Урок 36.
00:09:05
ManyToMany. Separate entity
Урок 37.
00:03:10
Collection performance
Урок 38.
00:09:13
ElementCollection
Урок 39.
00:10:58
Collection ordering
Урок 40.
00:08:25
Maps in mappings
Урок 41.
00:10:14
In-Memory databases. H2
Урок 42.
00:09:17
Docker. Testcontainers
Урок 43.
00:06:04
MappedSuperclass
Урок 44.
00:11:23
Inheritance. TABLE_PER_CLASS
Урок 45.
00:05:32
Inheritance. SINGLE_TABLE
Урок 46.
00:06:56
Inheritance. JOINED
Урок 47.
00:12:41
HQL. Part 1
Урок 48.
00:09:00
HQL. Part 2
Урок 49.
00:21:13
HQL. Практика
Урок 50.
00:33:36
Criteria API
Урок 51.
00:08:58
Querydsl. Настройка
Урок 52.
00:15:31
Querydsl. Практика
Урок 53.
00:08:22
Querydsl. Filters
Урок 54.
00:12:22
Введение в проблему N + 1 запросов
Урок 55.
00:06:04
@BatchSize
Урок 56.
00:06:20
@Fetch
Урок 57.
00:08:33
Query Fetch
Урок 58.
00:06:57
@FetchProfile
Урок 59.
00:13:59
Entity Graphs
Урок 60.
00:04:32
Best practices
Урок 61.
00:11:05
Введение в транзакции и блокировки
Урок 62.
00:09:07
JPA Transactions
Урок 63.
00:10:37
Locks. Optimistic. Part 1
Урок 64.
00:06:03
Locks. Optimistic. Part 2
Урок 65.
00:09:11
Locks. Pessimistic
Урок 66.
00:06:01
Read Only Transactions
Урок 67.
00:06:45
Nontransactional Data Access
Урок 68.
00:07:51
Entity Callbacks
Урок 69.
00:08:28
Listener callbacks
Урок 70.
00:17:19
Event Listeners
Урок 71.
00:07:02
Interceptors
Урок 72.
00:08:43
Hibernate Envers. Part 1
Урок 73.
00:11:37
Hibernate Envers. Part 2
Урок 74.
00:12:26
Hibernate Envers. Part 3
Урок 75.
00:11:31
Second Level Cache. Конфигурация
Урок 76.
00:11:00
Second Level Cache. @Cache
Урок 77.
00:11:19
Second Level Cache. Regions
Урок 78.
00:09:45
Second Level Cache. Query Cache
Урок 79.
00:14:22
DAO & Repository. CRUD
Урок 80.
00:10:22
DAO & Repository. CurrentSessionContext
Урок 81.
00:40:57
DAO & Repository. Практика
Урок 82.
00:09:59
DAO & Repository. JSR 303. Bean Validation
Урок 83.
00:04:54
Заключение. Путь развития
Авторы - denis.dmdev (Dzianis Matveyenka), udemy
denis.dmdev (Dzianis Matveyenka)
Меня зовут Денис, мне 30, а программирование мой близкий друг. Уже на протяжении 10 лет оно со мной идет рука об руку и помогает реализовываться в жизни. Чуть не забыл, я именно backend разработчик. То есть я разрабатываю архитектуру и логику приложений, а не отвечаю за его внешний вид. В данный момент я работаю в однойиз самых крупных компаний - Google. А также обучаю Java программированию на своих курсах DMdev, так как именно Java является моим
+112
udemy
Udemy - одна из самых больших площадок в мире по доставке обучающего контента от разных авторов всего мира. Присутсвуют курсы практически на любую тему.
Предыдущее сообщение не актуально, мы включили, поэтому оно само будет генерировать таблицы:
create
hazartilirot
По 63 уроку, внезапный переход на "стационарную" базу данных.... ткните меня носом, возможно, я в очередной раз что-то пропустил, однако, я не помню, чтобы мы создавали в ней таблицу. ХЗ, я сделал сам её, вроде пока работает, насколько правильно или неправильно - понятия не имею.
Интересно, а редактирование сообщений будет на этом сайте? Ошибочка в запросе юзера, нужно поменять на:
id BIGSERIAL PRIMARY KEY,
hazartilirot
LESSON 23:
DROP TABLE users;
CREATE TABLE company (
id SERIAL PRIMARY KEY,
name VARCHAR(64) NOT NULL UNIQUE
);
CREATE TABLE users (
id BIGINT PRIMARY KEY,
username VARCHAR(128) UNIQUE,
firstname VARCHAR(128),
lastname VARCHAR(128),
birth_date DATE,
role VARCHAR(128),
company_id INT REFERENCES company (id)
);
hazartilirot
Когда будете сохранять ползоватся (в пятом уроке), save() из документации depricated, поэтому пользуемся persist
User user = User.builder()
.username("johndoe@example.com")
.firstname("john")
.lastname("doe")
.birth_date(LocalDate.of(2000, 01, 21))
.age(23)
.build();
session.persist(user);
hazartilirot
create table users (
username varchar(128) primary key,
firstname varchar(128),
lastname varchar(128),
birth_date date,
age int
);
hazartilirot
Упал в ошибку cannot find support Gradle version for JDK 19 Intellij
решение у него в гитхабе
https://github.com/dmdev2020/hibernate-starter/issues/3
я опубликовал бы здесь, но тут, не позволяет редактор нормально постить сообщения и добавлять картинку :(
Команда внимательно читает ваши комментарии и оперативно на них реагирует. Вы можете спокойно оставлять запросы на обновления или задавать любые вопросы о курсе здесь.
Новый видеокурс (изучаете в любое время), где вы создадите большой fullstack проект Angular вместе с серверными технологиями (frontend + backend). Является продолжением первого курса (основы Angular).
Hibernate and Java Persistence API (JPA) Fundamentals
Готовы ли вы получить больше от JDBC и ваших данных, используя интеллектуальные оптимизированные методы? Этот курс Hibernate — отличное место для начала. Вы начнете с изучения объектно-реляционного сопоставления и Hibernate, а затем перейдете к изучению основ Hibernate. Оттуда Кевин научит вас базовым аннотациям сопоставления, сопоставлению составных типов и типов коллекций, а также ассоциациям сущностей.
Hibernate и Spring Data JPA: От начинающего до гуру
Hibernate and Spring Data JPA: Beginner to Guru
Hibernate - это реализация JPA по умолчанию, используемая Spring Data JPA.ОБРАТИТЕ ВНИМАНИЕ: Для этого курса требуются Java 17 и Spring Boot 3.JPA означает Java Persistence API. Это общий Java API, используемый для работы с реляционными базами данных.Spring Data JPA является абстракцией, построенной поверх спецификации JPA API.Благодаря абстракции Spring Data JPA, работа с сущностями базы данных становится очень эффективной.Spring Data JPA устран
create
CREATE TABLE payment (
id BIGSERIAL PRIMARY KEY,
amount INT,
receiver_id BIGINT REFERENCES users (id)
);
id BIGSERIAL PRIMARY KEY,
DROP TABLE users;
CREATE TABLE company (
id SERIAL PRIMARY KEY,
name VARCHAR(64) NOT NULL UNIQUE
);
CREATE TABLE users (
id BIGINT PRIMARY KEY,
username VARCHAR(128) UNIQUE,
firstname VARCHAR(128),
lastname VARCHAR(128),
birth_date DATE,
role VARCHAR(128),
company_id INT REFERENCES company (id)
);
User user = User.builder()
.username("johndoe@example.com")
.firstname("john")
.lastname("doe")
.birth_date(LocalDate.of(2000, 01, 21))
.age(23)
.build();
session.persist(user);
username varchar(128) primary key,
firstname varchar(128),
lastname varchar(128),
birth_date date,
age int
);
решение у него в гитхабе
https://github.com/dmdev2020/hibernate-starter/issues/3
я опубликовал бы здесь, но тут, не позволяет редактор нормально постить сообщения и добавлять картинку :(