Интеграция Spring Boot с PostgreSQL как проект Maven
PostgreSQL — это удобная универсальная СУБД . Эта статья позволяет нам увидеть, как интегрировать Spring Data JPA с PostgreSQL. При использовании PostgreSQL необходимо соблюдать некоторые соглашения. Мы расскажем и об этом.
Работа с PostgreSQL.
Мы можем легко создавать базы данных и таблицы в нем. На скриншоте ниже показано, как подключиться к PostgreSQL через командную строку.
Теперь давайте создадим таблицу с именем «geek_author» в базе данных «geeksforgeeks».
Note: During table creation, PostgreSQL expects _ as the separator between two words.
Последовательность необходима, так как мы используем «GenerationType.SEQUENCE». Следовательно, нам нужно создать, используя
CREATE SEQUENCE hibernate_sequence START 1;
Пример проекта
Структура проекта:
Это проект maven. Все зависимости должны быть указаны в pom.xml. Поскольку мы подключаем PostgreSQL, эта зависимость важна
<dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope> </dependency>
Поскольку мы используем данные Spring JPA, эта зависимость важна.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
пом.xml
XML
<? xml version = "1.0" encoding = "UTF-8" ?> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 < modelVersion >4.0.0</ modelVersion > < groupId >com.gfg.postgresql</ groupId > < artifactId >springboot-postgresql-sample</ artifactId > < version >0.0.1-SNAPSHOT</ version > < packaging >jar</ packaging > < name >springboot-postgresql-sample</ name > < description >Demo project for Spring Boot</ description > < parent > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-parent</ artifactId > < version >2.7.0</ version > < relativePath /> </ parent > < properties > < project.build.sourceEncoding >UTF-8</ project.build.sourceEncoding > < project.reporting.outputEncoding >UTF-8</ project.reporting.outputEncoding > < java.version >1.8</ java.version > </ properties > < dependencies > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-data-jpa</ artifactId > </ dependency > <!--postgresql dependency --> < dependency > < groupId >org.postgresql</ groupId > < artifactId >postgresql</ artifactId > < scope >runtime</ scope > </ dependency > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-web</ artifactId > </ dependency > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-test</ artifactId > < scope >test</ scope > </ dependency > </ dependencies > < build > < plugins > < plugin > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-maven-plugin</ artifactId > </ plugin > </ plugins > </ build > </ project > |
Начнем с класса Model. Именование пусть будет параллельным с таблицей Postgres
geek_author.java
Java
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table (name = "geek_author" ) public class geek_author { @Id @GeneratedValue (strategy=GenerationType.SEQUENCE) private Integer author_id; private String author_name; private String email_id; public Integer getAuthor_id() { return author_id; } public void setAuthor_id(Integer author_id) { this .author_id = author_id; } public String getAuthor_name() { return author_name; } public void setAuthor_name(String author_name) { this .author_name = author_name; } public String getEmail_id() { return email_id; } public void setEmail_id(String email_id) { this .email_id = email_id; } } |
Давайте напишем класс репозитория сейчас
АвторРепозиторий.java
Java
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.gfg.postgresql.model.geek_author; @Repository public interface AuthorRepository extends JpaRepository<geek_author, Long>{ } |
Авторконтроллер.java
Java
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.gfg.postgresql.model.geek_author; import com.gfg.postgresql.repository.AuthorRepository; // This means that this // class is a Controller @Controller // This means URL"s start with /geek (after Application path) @RequestMapping (path= "/geek" ) public class AuthorController { // This means to get the bean called geekuserRepository // Which is auto-generated by Spring, we will use it // to handle the data @Autowired private AuthorRepository authorRepository; // Map ONLY POST Requests @PostMapping (path= "/addauthor" ) public @ResponseBody String addAuthors ( @RequestParam String author_name , @RequestParam String email_id) { // @ResponseBody means the returned String // is the response, not a view name // @RequestParam means it is a parameter // from the GET or POST request geek_author geekAuthor = new geek_author(); geekAuthor.setAuthor_name(author_name); geekAuthor.setEmail_id(email_id); authorRepository.save(geekAuthor); return "Details got Saved" ; } @GetMapping (path= "/authors" ) public @ResponseBody Iterable<geek_author> getAllAuthors() { // This returns a JSON or // XML with the Book return authorRepository.findAll(); } } |
Приложение, которое можно запустить, закодировано следующим образом:
АвторApplication.java
Java
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class AuthorApplication { public static void main(String[] args) { SpringApplication.run(AuthorApplication. class , args); } } |
Когда все правильно, это можно легко запустить как обычное приложение Java.
Выход консоли:
Добавление авторов: это делается с помощью метода POST в контроллере.
Давайте воспользуемся клиентом «почтальон» для добавления авторов
Поиск авторов:
Мы можем легко получить информацию об авторе следующим образом:
http://localhost:8080/geek/authors
Поскольку мы уже вставили 3 записи, мы получаем все данные об авторе на скриншоте выше.