
From this lecture you will learn:
• How to communicate during this course
• Where to ask questions
• How to ask questions
• Communication channels
From this lecture you will learn:
• Where to find good tests to verify your knowledge
• How to get unlimited access to Learn IT application (only for my students from Udemy)
Why I Created This Bot
The Challenge: From Passive Learning to Real Mastery
The Solution – Learn IT Bot
Inside the Learn IT Bot – Key Features
Adaptive Difficulty & Endless Practice
Live Demo of the Learn IT AI Bot
Why It Matters – From Learning to Real-World Readiness
In this lesson, I’ll show you how my students get exclusive, free, no sign-up access to a one-of-a-kind AI Bot I personally built to help you deeply learn the material, reinforce your knowledge, and gain a real advantage in interviews, real-world work and career growth.
What is ORM
What is JPA
What is Hibernate
ORM Frameworks
JPA VS ORM VS Hibernate
JPA Advantages
Create a JPA project
Entities in JPA
Entity Annotation
Table Annotation
Column Annotation
ID Annotation
Generated Value Annotation
GenerationType.TABLE
GenerationType.SEQUENCE
GenerationType.IDENTITY
GenerationType.UUID
GenerationType.AUTO
Requirements for Entity Class
Composite Primary Keys
Temporal Annotation
Non-persisted fields (Transient Annotation)
Persist Enum types (Enumerated Annotation)
Entity Manager Factory
Entity Manager
persistence.xml
Transactions in JPA
Transaction Types in JPA
JTA VS RESOURCE_LOCAL
Practical Exercise
Insert JPA Entity
Select JPA Entity
Update JPA Entity
Delete JPA Entity
States of JPA Entity
New (Transient) State
Persistent (Managed) State
Detached (Unmanaged) State
Removed (Deleted) State
Handling of JPA Entity Lifecycle events
Entity Lifecycle Listener
Why we need locking
What is a Database Lock
Physical Locks
Logical Locks
Locking in JPA
Optimistic Locking
Pessimistic Locking
Optimistic VS Pessimistic locking
@Version Annotation
Explicit Lock Type
LockModeType Enum
Coding Demo
Use case: When to use mapping in JPA
Types of Relationships in Relational Databases
Mapping Directions
Types of Mapping in JPA
@OneToOne
@OneToMany & @ManyToOne
@ManyToMany
How to Cascade operations with Entities
CascadeType Enum
Eager and Lazy Fetch Types
@JoinColumn
@JoinTable
Types of queries in JPA
Query, TypedQuery, NamedQuery
NativeQuery
Criteria API
What is a JPQL
Key JPQL features
Property to Show SQL queries sent to the DB
Practical Exercises
What is Caching
Cache structure in JPA/Hibernate
First-level cache
Second-level cache
Query-level cache
Cache providers
CacheConcurencyStrategies
Ehcache
Cache Eviction Policy
Custom configuration of Ehcache
StandardQueryCache
UpdateTimestampsCache
Persistence Strategies in Ehcache
Practical examples
What is N+1 problem
Why it is important to avoid it
N+1 problem solutions
Entity Graph
@NamedEntityGraph Annotation
@NamedAttributeNode Annotation
Connection Pool in JPA
C3P0 for Hibernate connection pool
Pagination in JPA
LazyInitializationException
PersistenceException
Spring Data: Overview
Spring Data Modules
Spring Data JPA: Overview
JPA Repositories
Repository pattern
Spring Data JPA Advantages & Disadvantages
Configuration of the Spring Data JPA
Creation of JPA Repository
JPQL Queries in JPA Repository
Native SQL Queries in JPA Repository
Naming convention for methods in JPA Repository
End-to-end live demo
During the exam task you are going to take template of the multimodule project - online shop, and integrate Spring Data JPA into the persistence module of the application.
JDBC Overview
Why we need Spring JDBC
Problems of JDBC API
Spring Data JDBC VS Spring JDBC
JbdcTemplate
NamedParameterJdbcTemplate
SimpleJdbcInsert
SimpleJdbcCall
Spring JDBC packages overview
Practical code examples
Configuration of dependency for Spring JDBC
Configuration of required beans for Spring JDBC
JdbcTeamplate example
NamedParameterJdbcTemplate example
SimpleJdbcInsert example
SimpleJdbcCall example
Batch update with SqlParameterSourceUtils
RowMapper
During the exam task you are going to take a template of the multimodule project - online shop, and integrate Spring JDBC into the persistence module of the application.
In this lab, you will design and implement a simple relational database for managing users and their orders.
You’ll start by creating the core tables, establish one-to-many relationships, and then write SQL queries to explore and analyze the data.
By the end of this lab, you’ll have practiced key relational database concepts: primary keys, foreign keys, joins, filtering, and aggregate functions.
This lab simulates a real-world business scenario where each user can have multiple orders, and we need to analyze their purchase activity efficiently.
Create Database and Tables
Create a new database named user_orders_lab.
Create users and orders tables with proper primary and foreign keys.
Insert Initial Data
Populate both tables with at least 3–4 users and 5–6 orders.
Ensure that at least one user has multiple orders.
Display and Inspect Data
Run SELECT * queries to verify that data has been inserted correctly.
Join Data Across Tables
Write a JOIN query to display each order along with the corresponding user name.
Aggregation Analysis
Calculate total spending per user using SUM and GROUP BY.
Order the results by total amount descending.
Advanced Querying
Find users with more than one order (HAVING COUNT > 1).
Identify the most expensive order using a subquery.
In this lab, you will analyze a dataset of users and their orders to uncover meaningful business insights using SQL aggregate functions and subqueries.
You’ll calculate totals, averages, and counts, identify top customers, and use nested SELECT statements to compare individual data points to group-wide metrics.
By the end of this lab, you’ll be confident in using COUNT, SUM, AVG, MIN, MAX, GROUP BY, HAVING, and subqueries — all essential tools for data-driven decision-making in real-world projects.
Explore the Dataset: Display all records from both tables using SELECT *.
Basic Aggregations: Use COUNT, AVG, MIN, MAX to get overall order statistics.
User-Level Analysis: Calculate total and average spending per user using GROUP BY.
Country-Level Report: Group by country to see total orders and revenue per region.
Filtering with HAVING: Show only users whose total spending is above 500.
Subqueries for Comparison: Find users whose average order value is greater than the overall average order value.
Nested Subqueries: Find the largest order per country using a correlated subquery.
In this lab, you’ll work with a company database that includes employees, departments, and salaries.
You will learn how to filter and sort records using various SQL clauses (WHERE, LIKE, BETWEEN, IN, ORDER BY, LIMIT) and explore different types of joins (INNER, LEFT, RIGHT, CROSS) to connect related tables.
By the end of this lab, you’ll know how to query complex datasets effectively, extract relevant information, and analyze relationships between employees and their departments.
These are real-world skills used daily by data analysts, engineers, and backend developers working with relational databases.
Filter by Salary and Hire Date: Display employees earning more than 80,000 who were hired before 2021.
Pattern Matching with LIKE: Find employees whose last name starts with “W” or whose position contains the word “Engineer”.
Filtering with IN and BETWEEN: Show employees from Engineering or Finance earning between 75,000 and 125,000.
Sorting and Limiting Results: List the top 3 highest-paid employees.
INNER JOIN Practice: Display all employees with their department names using INNER JOIN.
LEFT and RIGHT JOIN Comparison: Compare LEFT JOIN and RIGHT JOIN results — notice the difference in unmatched records.
CROSS JOIN Exploration: Generate all combinations of employees and departments, limited to 10 rows for readability.
From this course, you can learn JPA and Hibernate
There are a lot of other courses on this topic. So, why would you choose exactly this course? Here are just a few reasons:
- Coding examples
To learn to program is not enough just watching videos and reading books. You also need to have a lot of practice. In this training course, you will review multiple practical tasks and coding examples which will help you learn and understand Java better.
- Open source code
We hide nothing from our students! Including the source code for the home task solutions and source code of examples that were shared during the lesson. Having the source code you can just copy and paste it to run it on your local computer to understand how things work better.
You are allowed to use all source code examples for learning purposes. This helps significantly to configure the environment and make tests work, especially in case students didn't work with any testing framework in the past.
- Q&A support
The significant difference between the online and offline learning process is the instructor's availability. If you are in one room with a tutor he always can help you to get understand the specific concept or to help fix your code on your computer.
In this course, we are supporting students with answers to any questions flagged in the Q&A section. In case there will be recurring questions - separate video lessons will be created to show how to address the issue.
So with this course you are not just getting video materials, code exercises, source code, access to the free mobile application without limits (which is still pretty cool, huh? :) ), but you also get tutor support and answers to your questions along with this course.
- Relevant knowledge
After our team investigated other Java courses on Udemy we realized that most of them have nothing in common with real life. The information which is shared there is very old and significantly out of date. For example, the instructor teaches a framework which is not been used already for 15 years. Or instructors do stress on the programming design which is not used anymore at all!
The instructor of this course is a consultant in a top-rated IT outsourcing company and helps to bring cutting-edge solutions in IT for all his clients. Feel free to check the LinkedIn page of the instructor and check skills endorsement. More than 19 thousand people across all over the world (BTW most of them are from the top 100 companies of the world) evaluated the skills of Andrii Piatakha.
With this course, you can be sure that you will spend your time learning the right things from one of the best IT consultants in the world.
- Free mobile App without limits for our students
Knowing Java is one skill. Be able to pass interviews in the company - that is another skill :) Nowadays a lot of companies use tests to select candidates on the first level of interview. We developed applications to practice skills specifically for such purposes.
In this course, we will provide you link to download our FREE mobile app for android. (soon it will be also available for iOS platforms)
The instructor of this course comes up with hundreds of tests that are used to test the knowledge of candidates. With this application, you will be well-prepared for the interview.
Also, only for our students - there is no limit on attempts to pass certification. In the course, we will tell you how to set up a special bonus code that will remove restrictions for our students inside the app.
- High concentration of useful material in each lesson
Sometimes you can notice that watching 5 minutes of our lesson is equivalent to watching another 30 minutes lesson.
This is because time spent for preparation for the lesson (script for the lesson, lesson structure) and video editing (to cut boring pieces of the lesson or time when the program loads) sometimes 10 times as much (sometimes even 20) as the final lesson duration after video editing.
Also, each topic is separated from another. In case some concept will be explained in the next lesson and you don't need to worry about understanding this in the scope of this lesson - the instructor will make an announcement when a specific topic will be covered.
Go and try it yourself! We will appreciate your feedback.
So don't wait! Take a look at the lessons' preview if you still have doubts!
Buy this course today, and you will get all updates for FREE!
For those who successfully passed this training course, or for students who were recognized for asking amazing questions, there is a special offer from the IT-Bulls company! The creator of this course is IT-Bulls company CEO and Founder. We are always in search of talents to run our amazing startups together with you. Probably you always dreamed about running your startup? In this course, you will be able to find the team who will teach you how to do that and (in particular cases) will be glad to help with implementation!
Hope you enjoy this course! And remember, we appreciate all your feedback! Your feedback will help us to become even better! Your feedback will help us to create to best Java course ever!
See you at the lessons! :)