Spring boot jpa mit der H2-Datenbank
Bin ich binden ein Beispiel-code, um mein springboot data-Projekt mit jpa für eine H2-DB.
Den code unten Anwendung richtig läuft, aber ich sehe keine Tabelle erschaffen, sehe ich keinen Fehler in der server-Konsole als auch. Ich habe die logs, sehe ich keine Abfragen immer erstellt eine gefeuert. Bin mache ich etwas falsch?
Domain-Klasse:
@Entity
public class Account {
@Id
@GeneratedValue
private Integer accountId;
private String name;
private String accType;
public Integer getAccountId() {
return accountId;
}
public String getName() {
return name;
}
public String getAccType() {
return accType;
}
public Account(Integer accountId, String name, String accType) {
super();
this.accountId = accountId;
this.name = name;
this.accType = accType;
}
public Account(String name, String accType) {
super();
this.name = name;
this.accType = accType;
}
public Account() {
}
Daten Loader-Klasse:
@Component
public class AccountLoaded {
private AccountRepository accountRepository;
public AccountLoaded(AccountRepository accountRepository) {
this.accountRepository = accountRepository;
}
@PostConstruct
private void loadData() {
Account account = new Account(1,"Madhu","Savings");
accountRepository.save(account);
System.out.println("Loaded Account " + account.toString());
}
}
Repository-Klasse:
@Repository
public interface AccountRepository extends CrudRepository<Account, Integer> {
}
Anwendung.Eigenschaften:
spring.datasource.jdbc-url=jdbc:h2:mem:test
spring.h2.console.enabled=true
spring.h2.console.path=/console
spring.datasource.platform=h2
Meine Logs in der server-Konsole:
2016-10-11 12:38:26.202 INFO 20020 --- [ main] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2016-10-11 12:38:26.217 INFO 20020 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [
name: default
...]
2016-10-11 12:38:26.285 INFO 20020 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {5.0.11.Final}
2016-10-11 12:38:26.287 INFO 20020 --- [ main] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2016-10-11 12:38:26.288 INFO 20020 --- [ main] org.hibernate.cfg.Environment : HHH000021: Bytecode provider name : javassist
2016-10-11 12:38:26.327 INFO 20020 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
2016-10-11 12:38:26.554 INFO 20020 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2016-10-11 12:38:26.995 INFO 20020 --- [ main] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000227: Running hbm2ddl schema export
2016-10-11 12:38:27.004 INFO 20020 --- [ main] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000230: Schema export complete
2016-10-11 12:38:27.044 INFO 20020 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
Loaded Account Account [accountId=1, name=Madhu, accType=Savings]
2016-10-11 12:38:27.587 INFO 20020 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@b472aa: startup date [Tue Oct 11 12:38:23 CDT 2016]; root of context hierarchy
2016-10-11 12:38:27.663 INFO 20020 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2016-10-11 12:38:27.664 INFO 20020 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2016-10-11 12:38:27.696 INFO 20020 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-10-11 12:38:27.696 INFO 20020 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-10-11 12:38:27.732 INFO 20020 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-10-11 12:38:27.959 INFO 20020 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2016-10-11 12:38:28.011 INFO 20020 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2016-10-11 12:38:28.015 INFO 20020 --- [ main] com.example.SpringdataApplication : Started SpringdataApplication in 4.898 seconds (JVM running for 5.255)
Sie alle sind so eingestellt:
H2 ist ein in-memory-Datenbank. Sie sehe keine Daten auf der Festplatte.
H2 kann verwendet werden, im Speicher oder auf der Festplatte, je nach Konfiguration.
HHH000227: Running hbm2ddl schema export
HHH000230: Schema export complete
H2 ist ein in-memory-Datenbank. Sie sehe keine Daten auf der Festplatte.
H2 kann verwendet werden, im Speicher oder auf der Festplatte, je nach Konfiguration.
InformationsquelleAutor user2334926 | 2016-10-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern
spring.datasource.jdbc-url=jdbc:h2:mem:test
zuspring.datasource.jdbc-url=jdbc:h2:file:test
(der test ist der name der db-Datei, könnte auch einen Pfad mit den Namen) und verwenden Sie eine der diese tools zum anzeigen der DB.Können Sie auch melden Sie die SQL-Anweisungen an die Konsole, indem
spring.jpa.show-sql: true
auf Ihre Bewerbung.EigenschaftenInformationsquelleAutor gtonic
Selbst wenn alles getan ist im Speicher, Sie sollten sehen, die SQL-logs, wenn der Frühling.jpa.show-sql auf true gesetzt ist (in der Anwendung.properties-Datei).
Vergessen Sie nicht die "Frühling.jpa.erzeugen-ddl" auf true ( Standard ist false) und machen Sie die loadData-Methode transaktional (siehe Spring @Transactional-annotation).
InformationsquelleAutor Sébastien Helbert
Wenn Sie gehen, um die eingebettete h2-Konsole (http://localhost:8080/console), und geben Sie den richtigen Verbindungs-URL (jdbc:h2:mem:test), sollten Sie die Dinge sehen.
Eingebetteten h2-Konsole nicht zeigen, das richtige URL-Verbindung standardmäßig, es vergisst die :mem: Teil IIRC.
InformationsquelleAutor Geert Pante