Если вы ищете согласованность между базами данных, а также подход Spring Data к контенту, связанному с сущностями Spring Data, то почему бы не взглянуть на Spring Content JPA ?Как и Spring Data, он обеспечивает абстракцию и простую, продуманную модель программирования для ваших потребностей в контенте.Вы можете добавить его следующим образом: -
pom.xml
<!-- Java API -->
<dependency>
<groupId>com.github.paulcwarren</groupId>
<artifactId>spring-content-jpa</artifactId>
<version>0.4.0</version>
</dependency>
<!-- REST API -->
<dependency>
<groupId>com.github.paulcwarren</groupId>
<artifactId>spring-content-rest</artifactId>
<version>0.4.0</version>
</dependency>
Конфигурация
@Configuration
@EnableJpaStores
@Import("org.springframework.content.rest.config.RestConfiguration.class")
public class ContentConfig {
@Value("/org/springframework/content/jpa/schema-drop-h2.sql")
private Resource dropReopsitoryTables;
@Value("/org/springframework/content/jpa/schema-h2.sql")
private Resource dataReopsitorySchema;
@Bean
DataSourceInitializer datasourceInitializer() {
ResourceDatabasePopulator databasePopulator =
new ResourceDatabasePopulator();
databasePopulator.addScript(dropReopsitoryTables);
databasePopulator.addScript(dataReopsitorySchema);
databasePopulator.setIgnoreFailedDrops(true);
DataSourceInitializer initializer = new DataSourceInitializer();
initializer.setDataSource(dataSource());
initializer.setDatabasePopulator(databasePopulator);
return initializer;
}
}
Чтобы связать контент, добавьте аннотации Spring Content к своей учетной записи.
Example.java
@Entity
public class Example {
// replace @Lob field with
@ContentId
private String contentId;
@ContentLength
private long contentLength = 0L;
// if you have rest endpoints
@MimeType
private String mimeType = "text/plain";
Создайте «хранилище»:
ExampleStore.java
@StoreRestResource(path="examplesContent")
public interface ExampleStore extends ContentStore<Example, String> {
}
Это все, что вам нужно для создания конечных точек REST @ /examplesContent
.Когда ваше приложение запускается, Spring Content проверит ваши зависимости (см. Spring Content JPA / REST), взглянет на ваш ExampleStore
интерфейс и внедрит реализацию этого интерфейса для JPA.Он также внедрит @Controller
, который перенаправляет http-запросы к этой реализации.Это избавляет вас от необходимости реализовывать все это самостоятельно.
Итак ...
curl -X POST /examplesContent/{exampleId}
с запросом multipart / form-data сохранит содержимое в базе данных и свяжет его с примером объекта, идентификатор которого равенexampleId
.
curl /examplesContent/{exampleId}
получит его снова и так далее ... поддерживает полный CRUD.
Существует несколько руководств и видео по началу работы здесь .Справочное руководство - здесь .
HTH