Считать объект базы данных с помощью весенней загрузки и h2 - PullRequest
0 голосов
/ 01 декабря 2019

Я хочу знать, как считывать объект базы данных из базы данных h2 в мой Spring-контроллер, используя hibernate (или что-нибудь на самом деле, я не женат на hibernate).

У меня есть простая настройка проекта с использованием gradle.

И мой application.properties равен

spring.thymeleaf.cache=false
# Datasource
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.platform=h2
spring.datasource.url=jdbc:h2:mem:database
spring.datasource.username=something
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.show-sql=true
# H2
spring.h2.console.enabled=true
spring.h2.console.path=/h2
spring.h2.console.settings.trace=false
spring.h2.console.settings.web-allow-others=false
# Hibernate
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.show_sql=false
spring.jpa.properties.hibernate.use_sql_comments=false
spring.jpa.properties.hibernate.format_sql=false
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext

Я вижу, что schema.sql и data.sql выполняются. И я вижу, что моя таблица существует с данными внутри нее, используя консоль h2. У меня тоже есть объект-сущность.

Однако я понятия не имею, как мне поступить, читая мой объект-сущность из h2 в мой контроллер. Может кто-то указать на правильный ресурс или объяснить, как это сделать?

1 Ответ

3 голосов
/ 02 декабря 2019

Самый простой подход к этому - использовать spring-data-jpa . Для этого вам нужен объект (то есть класс с аннотацией @ javax.persistence.Entity), который будет представлять строку в вашей таблице.

@Entity
public class Thing {
    @Id
    private String id;
    private String name;
}

Затем вам нужен репозиторий, который может читать ипиши из БД. Это интерфейс, который расширяет один из классов репозитория Spring, обычно это CrudRepository, например:

public interface CustomerRepository extends CrudRepository<Thing, String> {
  Thing findById(long id);
}

Затем, автоматически подключите репо к конструктору вашего контроллера, и вы почти закончили. Последняя часть вызывает один из методов репо. Вам не нужно реализовывать репо, Spring сделает это за вас. В базовом репо есть множество полезных методов по умолчанию, которые вам даже не нужно перечислять в своем коде. На сайте Spring есть множество ссылок на все это, и я связал вас с хорошим учебником для него (в нем есть отличные примеры, но вам действительно следует использовать maven, потому что он намного лучше во всех возможных отношениях).

...