J'ai eu du mal avec les détails, alors je vais l'écrire comme une note pour moi-même.
On suppose que Heroku Postgres a été ajouté à l'application Heroku.
Spring Boot est 2.0.4.
En regardant les paramètres de Heroku Potgres (figure ci-dessus), il est dit "** Heroku CLI **" et la commande suivante est écrite.
heroku pg:nom de la banque de données psql--app Nom de l'application
J'ai eu une erreur lorsque je l'ai essayé dans mon environnement. Vous devez mettre ** psql ** sur votre machine locale. C'est naturel w
-->Connexion au nom de la banque de données
! The local psql command could not be located. For help installing psql, see
! https://devcenter.heroku.com/articles/heroku-postgresql#local-setup
Reportez-vous à URL ci-dessus et accédez à votre environnement Windows 10 [Installation de Windows](https://devcenter.heroku.com/ Je l'ai installé avec les articles / heroku-postgresql # set-up-postgres-on-windows). Ensuite, j'ai défini la variable d'environnement sur "C: \ Program Files \ PostgreSQL \
heroku pg:nom de la banque de données psql--app Nom de l'application
-->Connexion au nom de la banque de données
psql (10.4)
Connexion SSL(protocole: TLSv1.2, méthode de cryptage: ECDHE-RSA-AES256-GCM-SHA384, longueur en bits:256, compression:de)
"help"Obtenez de l'aide avec.
nom de l'application::DATABASE=>
Vous vous êtes connecté avec succès.
C'est une partie qui n'a rien à voir avec Spring Boot ou Heroku, mais j'ai fait une note car je ne connaissais pas trop la commande Postgres.
\l
Quand j'ai fait cela, beaucoup de bases de données sont sorties, mais je peux voir les bases de données des autres propriétaires ...? Est-ce multi-locataire?
\c nom de la base de données
Connexion SSL(protocole: TLSv1.2, méthode de cryptage: ECDHE-RSA-AES256-GCM-SHA384, longueur en bits:256, compression:de)
Base de données"xxxx"À l'utilisateur"xxxx"Connecté en tant que.
Après avoir créé une table avec create table, affichez la table.
\d
Liste des relations
Schéma|Nom|Moule|propriétaire
----------+----------+----------+----------------
public | nogizaka |table| xxxxxxxxxxxxx
Voir les détails tels que les colonnes.
\d nogizaka
Le schéma est une super omission.
table"public.nogizaka"
Colonne|Moule|Collation|Autoriser la valeur Null|Défaut
------+-----------------------+----------+---------------+------------
id | integer | | |
name | character varying(64) | | |
Spring Boot
Spring Initializr
Créez un modèle pour votre projet avec Spring Initializr. J'ai choisi les trois dépendances suivantes. Vous n'êtes pas obligé d'avoir un site Web, mais je l'ai inclus pour faire du point de terminaison d'exécution une API REST.
application.properties
Le contenu de la connexion à la base de données a été défini et exploité comme suit en fonction des informations d'identification de la base de données dans les paramètres de Heroku Postgres.
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://nom d'hôte:numéro de port/Nom de la base de données?sslmode=require
spring.datasource.username=Nom d'utilisateur
spring.datasource.password=mot de passe
Quand je suis devenu accro, les deux points suivants ont été divulgués.
--L'URL "postgresql" a été remplacée par "postgres" (j'ai copié l'URL écrite dans la CLI Heroku) --Je n'ai pas ajouté le paramètre sslmode
Tout ce que vous avez à faire est d'écrire.
Entity
Nogizaka.java
package tech.kikutaro.herokupostgres;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="nogizaka")
public class Nogizaka {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@Column(name="name")
private String name;
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;
}
}
Il peut être préférable d'utiliser Lombok pour le setter et le getter.
Repository
NogizakaRepository.java
package tech.kikutaro.herokupostgres;
import org.springframework.data.jpa.repository.JpaRepository;
public interface NogizakaRepository extends JpaRepository<Nogizaka, Long> {
}
Service
NogizakaService.java
package tech.kikutaro.herokupostgres;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class NogizakaService {
@Autowired
NogizakaRepository nogirepo;
public long count() {
return nogirepo.count();
}
public Nogizaka getMember(long id) {
return nogirepo.getOne(id);
}
}
Pour le moment, comptez et obtenez.
Main
HerokupostgresApplication.java
package tech.kikutaro.herokupostgres;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class HerokupostgresApplication {
@Autowired
private NogizakaService nogiService;
public static void main(String[] args) {
SpringApplication.run(HerokupostgresApplication.class, args);
}
@GetMapping("/count")
public String count() {
System.out.println(nogiService.count());
return Long.toString(nogiService.count());
}
@GetMapping("/select/{id}")
public String getName(@PathVariable("id") long id) {
return nogiService.getMember(id).getName();
}
}
Cela a fonctionné en toute sécurité.
http://localhost:8080/nogizaka/1
http://localhost:8080/select/1
Recommended Posts