• How to
  • Top 10
  • Interview Tricks
  • Java
  • Programing
No Result
View All Result
  • How to
  • Top 10
  • Interview Tricks
  • Java
  • Programing
No Result
View All Result
No Result
View All Result
Home How to

Basic Spring Boot Project Rest API

Simple Spring Boot CRUD application for user management using JPA and MySQL.

by Dineshkumar
20 August 2024
in How to, Java, Programing
146 10
0
Spring Boot Project
483
SHARES
1.6k
VIEWS
Share on FacebookShare on Twitter

Simple Spring Boot Project CRUD application for User Management using JPA and MySQL – V1

Introduction

Are you ready to dive into the world of Spring Boot? Whether you’re a newbie or a seasoned developer, creating a simple CRUD (Create, Read, Update, Delete) application using Spring Boot with JPA and MySQL is a fantastic way to enhance your skills. But first, let’s understand what Spring Boot and CRUD are, and why JPA and MySQL are essential for this project.

What is Spring Boot?

Spring Boot is a framework that makes it easy to create stand-alone, production-grade Spring-based applications. It simplifies the development process by offering a range of pre-configured options for setup and deployment.

What is CRUD?

CRUD stands for Create, Read, Update, and Delete. These are the four basic operations that can be performed on a database. In the context of a Spring Boot application, CRUD operations enable users to manage data in a relational database efficiently.

Importance of JPA and MySQL in Spring Boot

Java Persistence API (JPA) is a specification that provides a way to manage relational data in Java applications. MySQL is a popular open-source relational database management system. Together, they offer a robust and efficient way to handle data persistence in Spring Boot applications.

Setting Up the Development Environment

Installing Java Development Kit (JDK)

First, you’ll need to install the Java Development Kit (JDK). You can download it from the official Oracle website. Follow the installation instructions specific to your operating system.

Setting up Spring Boot with Spring Initializr

Spring Initializr is an excellent tool to bootstrap your Spring Boot project. Visit Spring Initializr, select the required configurations (like project metadata, dependencies, etc.), and generate your project.

Configuring MySQL Database

Download and install MySQL from the official website. Once installed, create a new database for your application.

Understanding JPA and its Importance

What is JPA?

Java Persistence API (JPA) is a specification for accessing, persisting, and managing data between Java objects and relational databases.

Advantages of Using JPA

  • Simplicity: JPA abstracts complex SQL queries, making database operations simpler.
  • Portability: Applications can switch databases without changing code.
  • Performance: JPA offers caching and other performance optimizations.

How JPA Integrates with Spring Boot

Spring Boot seamlessly integrates with JPA, allowing developers to focus more on business logic than boilerplate code.

Creating a Spring Boot Project

1. Project Structure

2. Add Dependencies

  1. Spring Web,
  2. Spring Dev Tools,
  3. Spring Data JPA,
  4. MySQL Connector.

3. Application Properties Configuration

Configure the application.properties file with your MySQL database connection details.

spring.datasource.url=jdbc:mysql://localhost:3306/usermanagement
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
server.port=8080

4. Creating the Database Model

Create a new Java class User in the model package

package com.user.model;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class User {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    private String gender;
    private String address;
    private String adharNumber;
    
    
    
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	public User(Long id, String name, String gender, String address, String adharNumber) {
		super();
		this.id = id;
		this.name = name;
		this.gender = gender;
		this.address = address;
		this.adharNumber = adharNumber;
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getAdharNumber() {
		return adharNumber;
	}
	public void setAdharNumber(String adharNumber) {
		this.adharNumber = adharNumber;
	}
    
    
}

4. Create the User Repository

Create a new interface UserRepository in the repository package:

package com.user.repo;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.user.model.User;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}

5. Create the User Service

Create a new interface UserService in the service package:

package com.user.service;

import java.util.List;
import java.util.Optional;

import com.user.model.User;

public interface UserService {
	User saveUser(User user);
    List<User> getAllUsers();
    Optional<User> getUserById(Long id);
    User updateUser(User user, Long id);
    void deleteUser(Long id);

}

6. Implement the User Service

Create a new class UserServiceImpl in the service.impl package:

package com.user.service;

import java.util.List;
import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.user.model.User;
import com.user.repo.UserRepository;

@Service
public class UserServiceImpl  implements UserService{

	@Autowired
    private UserRepository userRepository;

    @Override
    public User saveUser(User user) {
        return userRepository.save(user);
    }

    @Override
    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    @Override
    public Optional<User> getUserById(Long id) {
        return userRepository.findById(id);
    }

    @Override
    public User updateUser(User user, Long id) {
        User existingUser = userRepository.findById(id).orElseThrow(() -> new RuntimeException("User not found"));
        existingUser.setName(user.getName());
        existingUser.setGender(user.getGender());
        existingUser.setAddress(user.getAddress());
        existingUser.setAdharNumber(user.getAdharNumber());
        return userRepository.save(existingUser);
    }

    @Override
    public void deleteUser(Long id) {
        userRepository.deleteById(id);
    }
}

7. Create the User Controller

Create a new class UserController in the controller package:

package com.user.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.user.model.User;
import com.user.service.UserService;

@RestController
@RequestMapping("/api/users")
public class UserController {
	@Autowired
    private UserService userService;

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.saveUser(user);
    }

    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @GetMapping("/{id}")
    public ResponseEntity<User> getUserById(@PathVariable Long id) {
        User user = userService.getUserById(id).orElseThrow(() -> new RuntimeException("User not found"));
        return ResponseEntity.ok(user);
    }

    @PutMapping("/{id}")
    public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User user) {
        return ResponseEntity.ok(userService.updateUser(user, id));
    }

    @DeleteMapping("/{id}")
    public String deleteUser(@PathVariable Long id) {
        userService.deleteUser(id);
        return "User Deleted";
    }
}

8. Run the Application

Run your Spring Boot application and test the endpoints using a tool like Postman or curl.

This basic setup allows for creating, reading, updating, and deleting user records in your MySQL database. If you need more specific details or enhancements, feel free to ask!

 

FAQs

What is Spring Boot used for?

Spring Boot is used for building stand-alone, production-grade Spring-based applications with minimal configuration.

How does JPA simplify database interactions?

JPA simplifies database interactions by abstracting the complexities of SQL queries and providing an object-relational mapping (ORM) framework.

What are the benefits of using MySQL with Spring Boot?

MySQL is a powerful, open-source relational database that integrates seamlessly with Spring Boot, providing robust data management capabilities.

How can I secure my Spring Boot application?

You can secure your Spring Boot application by using Spring Security to enforce authentication and authorization.

What are some common challenges when working with Spring Boot?

Common challenges include managing dependencies, configuring databases, handling exceptions, and optimizing performance.

Previous Post

Core Java Interview Topics

Next Post

How to set up a TypeScript and JavaScript Project Using Nodemon

Next Post

How to set up a TypeScript and JavaScript Project Using Nodemon

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recommended.

Basic Spring Boot Project Rest API

20 August 2024

How to Make Money on Amazon Without Selling

7 November 2024

Subscribe.

Trending.

Top 9 Best Websites for Freepik Downloader

21 October 2023

Tips to Get 30TB of Free Google Drive Storage

29 September 2023

How To View Deleted Instagram Account

20 March 2024

How To Block Someone Telegram Account

18 August 2024

Core Java Interview Topics

6 August 2024

About

SmileyTricks

This site delivers Programming Tips, Top 10 Technology Facts, Educational Resources, the Latest Tech Updates, and How-To Guides on tech topics.

Categories

  • How to
  • Interview Tricks
  • Java
  • Programing
  • React JS
  • Technology
  • Top 10
  • Tutorial

Tags

Affiliate Design Engineering Innovation javascript React JS SEO typescript Youtube
  • About Us
  • Contact Us
  • Privacy & Policy
  • Disclaimer
  • Terms & Condition

© 2024 SmileyTricks All rights reversed By SmileUpdates Smileytricks.

No Result
View All Result
  • How to
  • Top 10
  • Interview Tricks
  • Java
  • Programing

© 2024 SmileyTricks All rights reversed By SmileUpdates Smileytricks.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
Exit mobile version