Mar 3 · 3 min read

JPA is a standard for ORM. It is an API layer that maps Java objects to the database tables. All you need is to annotate your Domain object with @Entity.

In Spring Boot, Spring Data JPA brings the goodness of Spring Data and JPA together.

In the JDBC world we have to embed sql queries inside the codebase to access the database, JPA hides all that complexity by providing many CRUD related methods via JpaRepository.

Let’s take a look

Above code is mapping User Object to User table in the database. User table consists two columns “first_name” and “last_name”. @Column annotation is defining the column inside the User table.

JPA supports many annotations e.g. @Table annotation can define the indexes on the table. Take a look at the sample code below.

Above we are creating an index name “name_index” on the first_name column.

Data access layer without JPA:

JDBC is the prominent method to access the database. JDBC requires one to write sql queries to communicate with the database, it makes use of Statement, ResultSet etc. to prepare a sql statement and gets the result out of database respectively.

Let’s take a look below-:

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(“SELECT first_name FROM Customers WHERE last_name = ‘Doe’”);

Here we create a statement object and call executeQuery on it with supplying the SQL query. ResultSet object will contain all the returned result from the query. We can now use an iterator to iterate over items inside result set.

Similarly an insert statement could look like this.

Statement stmt = connection.createStatement();
stmt.execute(“INSERT INTO user (FIRST_NAME,LAST_NAME) VALUES (1,’John’,’Doe’)”);

Data access layer with JPA

Let’s see how JPA does above two database operations.

Spring Data Jpa expose JpaRepository which is comprises on all the CRUD methods. Once we define a repository for the domain object we are ready to call these methods.

Let’s create a repository interface for User.

@Repository annotation tells Spring Boot to scan interface and make it available at startup. You’ll notice that we haven’t create any method inside our interface because we don’t need to, atleast for the simple CRUD use cases.
All those operations are supported by JpaRepository out of the box and we are extending it.

Now let’s compare same select and insert operation of Jdbc here in Jpa.

Like Select if we have to retrieve all the objects we can do

User user = userRepository.findAll();

Like Insert if we have to insert a user we can do;Much simpler than the JDBC implementation.

Let’s take a look at another example.

Finding all the users with the given first name.

Use “findBy” to search on a particular column.

// find rows by the first name.
userRepository.findByFirstName(String firstName);

// find rows by the last name.
userRepository.findByLastName(String lastName);

I’ll stop here for this post. In the next post I’ll write how to handle more complex sql queries using JPA.

If you like to walk through video tutorial rather I have a Spring Boot playlist on YouTube 👉 Spring Boot Tutorial Series

I post daily about programming on different platforms with the intention of keeping tech content clean and less spammy.

You can also find me 👇

Youtube | Twitter | Instagram

Let’s learn together 💪💪

Happy Coding 💻

From Confusion to Clarification

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store