Edited at

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