Ich hatte mit den Details zu kämpfen, deshalb werde ich sie als Memo für mich selbst aufschreiben.
Es wird davon ausgegangen, dass Heroku Postgres zur Heroku-App hinzugefügt wurde.
Spring Boot ist 2.0.4.
In den Einstellungen von Heroku Potgres (obige Abbildung) wird "** Heroku CLI **" angezeigt und der folgende Befehl wird geschrieben.
heroku pg:psql Datenspeichername--App App Name
Ich habe einen Fehler erhalten, als ich es in meiner Umgebung ausprobiert habe. Sie müssen ** psql ** auf Ihrem lokalen Computer installieren. Es ist natürlich w
-->Verbindung zum Datenspeichernamen herstellen
! The local psql command could not be located. For help installing psql, see
! https://devcenter.heroku.com/articles/heroku-postgresql#local-setup
Lesen Sie URL oben und wechseln Sie zu Ihrer Windows 10-Umgebung Windows Setup. Ich habe es mit Artikeln installiert (heroku-postgresql # set-up-postgres-on-windows). Dann setze ich die Umgebungsvariable auf "C: \ Programme \ PostgreSQL \
heroku pg:psql Datenspeichername--App App Name
-->Verbindung zum Datenspeichernamen herstellen
psql (10.4)
SSL-Verbindung(Protokoll: TLSv1.2, Verschlüsselungsmethode: ECDHE-RSA-AES256-GCM-SHA384, Bitlänge:256, Komprimierung:aus)
"help"Holen Sie sich Hilfe bei.
App Name::DATABASE=>
Sie haben erfolgreich eine Verbindung hergestellt.
Dies ist ein Teil, der nichts mit Spring Boot oder Heroku zu tun hat, aber ich habe eine Notiz gemacht, weil ich den Postgres-Befehl nicht allzu gut kannte.
\l
Als ich das tat, kamen viele Datenbanken heraus, aber ich kann die DBs anderer Besitzer sehen ...? Ist es mandantenfähig?
\c Datenbankname
SSL-Verbindung(Protokoll: TLSv1.2, Verschlüsselungsmethode: ECDHE-RSA-AES256-GCM-SHA384, Bitlänge:256, Komprimierung:aus)
Datenbank"xxxx"An den Benutzer"xxxx"Verbunden als.
Zeigen Sie nach dem Erstellen einer Tabelle mit create table die Tabelle an.
\d
Beziehungsliste
Schema|Name|Schimmel|Inhaber
----------+----------+----------+----------------
public | nogizaka |Tabelle| xxxxxxxxxxxxx
Siehe Details wie Spalten.
\d nogizaka
Das Schema ist Superauslassung.
Tabelle"public.nogizaka"
Säule|Schimmel|Kollation|Nullwert zulassen|Standard
------+-----------------------+----------+---------------+------------
id | integer | | |
name | character varying(64) | | |
Spring Boot
Spring Initializr
Erstellen Sie mit Spring Initializr eine Vorlage für Ihr Projekt. Ich habe die folgenden drei Abhängigkeiten gewählt. Sie müssen kein Web haben, aber ich habe es eingefügt, um den Laufzeitendpunkt zu einer REST-API zu machen.
application.properties
Der Inhalt der Verbindung zur Datenbank wurde basierend auf den Datenbankanmeldeinformationen in den Einstellungen von Heroku Postgres wie folgt definiert und betrieben.
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://Hostname:Port-Nummer/Name der Datenbank?sslmode=require
spring.datasource.username=Nutzername
spring.datasource.password=Passwort
Als ich zum ersten Mal süchtig wurde, waren die folgenden zwei Punkte durchgesickert.
Alles was Sie tun müssen, ist zu schreiben.
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;
}
}
Es kann besser sein, Lombok als Setter und Getter zu verwenden.
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);
}
}
Vorerst nur zählen und holen.
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();
}
}
Es hat sicher funktioniert.
http://localhost:8080/nogizaka/1
http://localhost:8080/select/1
Recommended Posts