Java
PostgreSQL
spring
spring-boot
spring-data-jpa

Spring Boot + PostgreSQLの設定方法

More than 1 year has passed since last update.

メモ

概要

  • SpringBootでPostgreSQLを使えるようにする
  • 簡単なアプリを作る ※どういう仕組みで動いてるかの詳しい説明は省きます

環境

  • SpringToolSuite 3.8.4 (以下、STS)
  • SpringBoot 1.5.3.RELEASE
  • PostgreSQL v9.3

前提

  • SpringToolSuiteが導入済み
  • PostgreSQLが導入済み(今回はホストOSに導入したものを使用)

手順

  1. DBの設定
  2. プロジェクト作成
  3. プロジェクト設定
  4. モデル・コントローラ・リポジトリ・サービスの作成
  5. 実行

準備

プロジェクトを作る前にあらかじめDBを作っておきます

PostgreSQL
CREATE DATABASE testdb;
 (データベース切り替えを忘れずに)
CREATE TABLE person (
id SERIAL PRIMARY KEY
, name VARCHAR(16)
, age INT);

INSERT INTO person VALUES
 (1,'taro',19)
 , (2,'tadokoro',24)
 , (3,'hanako',14);

導入

新しいプロジェクトの作成

Spring Initializr を使ってプロジェクトを作成
1.png

Generate Projectボタンを押すとプロジェクトフォルダがダウンロードされる。
その後、解凍して好きな場所に置いておく

プロジェクトのインポート

STSのタブの File -> Open Projects From FileSystems..から[Directory]ボタンを選択し、先ほど解凍したプロジェクトフォルダを選択する
Import as がMavenになっていることを確認し、[Finish]を選択

※Import asがEclipseの場合はもう一度解凍し直すか、解凍方法を変えてプロジェクトを選択

環境設定

pom.xmlの書き換え

Spring IO platformにアクセス
springioplatform.png
QuickStartにある設定の記述をコピーして自分のpom.xmlに追加

/bootpostgres/pom.xml
~~~
</properties>

<!-- ここから -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.spring.platform</groupId>
            <artifactId>platform-bom</artifactId>
            <version>Brussels-SR2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<!-- ここまで -->

<dependencies>
  <!-- ついでに下記も追加 -->
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
  </dependency>
  <!-- 追加ここまで -->
~~~

PostgreSQLへの接続情報を追記する

/src/main/resources/application.properties
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/testdb
spring.datasource.username=postgres
spring.datasource.password=hogehoge

環境設定は以上で終わり

モデルの作成

src/main/java/com.takahashi.Person.java/
@Entity
@Table(name = "person")
public class Person {

  @Id
  @GeneratedValue(strategy=GenerationType.IDENTITY)
  private int id;

  @Column(name="name")
  private String name;

  @Column(name="age")
  private int age;

  public Integer getId() {
    return id;
  }
  public void setId(Integer id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
}

リポジトリの作成

/src/main/resources/com.takahashi.PersonRepository.java
@Repository
public interface PersonRepository extends JpaRepository<Person,Integer>{

}

サービスの作成

/src/main/resources/com.takahashi.PersonService.java
@Service
@Transactional
public class PersonService {

  @Autowired
  PersonRepository repository;

  public List<Person> findAll(){
    return repository.findAll(new Sort(Sort.Direction.ASC,"id"));
  } 
}

コントローラーの作成

/src/main/resources/com.takahashi.PersonController.java
@RestController
@RequestMapping("/person")
public class PersonController {

  @Autowired
  PersonService service;

  @RequestMapping(value="/",method=RequestMethod.GET)
  public List<Person> index(){
    return service.findAll();
  }

}

実行する

プロジェクトを選択して右クリック
Run as -> Spring Boot App
zikkoukekka.png

上記のように表示されていればOK

参考サイト

https://www.slideshare.net/shintanimoto/spring-boot10
http://dev.classmethod.jp/server-side/java/using_spring_boot_2/

サンプルプロジェクト

https://github.com/aiue1500/bootpostgres