Spring Data JPA, часть более крупного семейства Spring Data, упрощает реализацию репозиториев на основе JPA. В этом модуле рассматривается расширенная поддержка уровней доступа к данным на основе JPA. Это упрощает создание приложений на базе Spring, использующих технологии доступа к данным.
Реализация уровня доступа к данным приложения долгое время была обременительной. Для выполнения простых запросов, а также разбиения на страницы и аудита необходимо написать слишком много шаблонного кода. Spring Data JPA стремится значительно улучшить реализацию уровней доступа к данным, сокращая усилия до того количества, которое действительно необходимо. Как разработчик, вы пишете интерфейсы своего репозитория, включая собственные методы поиска, а Spring автоматически предоставит реализацию.
Реализация методов CRUD для объектов JPA
Генерация динамического запроса на основе имен методов запроса
Прозрачный запуск JPA NamedQueries методами запроса.
Реализация базовых классов предметной области, обеспечивающих базовые свойства.
Поддержка прозрачного аудита (создано, последнее изменение)
Возможность интеграции собственного кода репозитория.
Простая интеграция Spring с пользовательским пространством имен
Этот проект регулируется Кодексом поведения Spring. Принимая участие, вы должны соблюдать этот кодекс поведения. Пожалуйста, сообщите о неприемлемом поведении по адресу [email protected].
Вот краткий тизер приложения, использующего репозитории данных Spring на Java:
public interface PersonRepository extends CrudRepository < Person , Long > {
List < Person > findByLastname ( String lastname );
List < Person > findByFirstnameLike ( String firstname );
}
@ Service
public class MyService {
private final PersonRepository repository ;
public MyService ( PersonRepository repository ) {
this . repository = repository ;
}
public void doWork () {
repository . deleteAll ();
Person person = new Person ();
person . setFirstname ( "Oliver" );
person . setLastname ( "Gierke" );
repository . save ( person );
List < Person > lastNameResults = repository . findByLastname ( "Gierke" );
List < Person > firstNameResults = repository . findByFirstnameLike ( "Oli%" );
}
}
@ Configuration
@ EnableJpaRepositories ( "com.acme.repositories" )
class AppConfig {
@ Bean
public DataSource dataSource () {
return new EmbeddedDatabaseBuilder (). setType ( EmbeddedDatabaseType . H2 ). build ();
}
@ Bean
public JpaTransactionManager transactionManager ( EntityManagerFactory emf ) {
return new JpaTransactionManager ( emf );
}
@ Bean
public JpaVendorAdapter jpaVendorAdapter () {
HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter ();
jpaVendorAdapter . setDatabase ( Database . H2 );
jpaVendorAdapter . setGenerateDdl ( true );
return jpaVendorAdapter ;
}
@ Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory () {
LocalContainerEntityManagerFactoryBean lemfb = new LocalContainerEntityManagerFactoryBean ();
lemfb . setDataSource ( dataSource ());
lemfb . setJpaVendorAdapter ( jpaVendorAdapter ());
lemfb . setPackagesToScan ( "com.acme" );
return lemfb ;
}
}
Добавьте зависимость Maven:
< dependency >
< groupId >org.springframework.data</ groupId >
< artifactId >spring-data-jpa</ artifactId >
< version >${version}</ version >
</ dependency >
Если вам нужны последние снимки предстоящей основной версии, воспользуйтесь нашим репозиторием снимков Maven и объявите соответствующую версию зависимости.
< dependency >
< groupId >org.springframework.data</ groupId >
< artifactId >spring-data-jpa</ artifactId >
< version >${version}-SNAPSHOT</ version >
</ dependency >
< repository >
< id >spring-snapshot</ id >
< name >Spring Snapshot Repository</ name >
< url >https://repo.spring.io/snapshot</ url >
</ repository >
Возникли проблемы с Spring Data? Мы будем рады помочь!
Проверьте справочную документацию и Javadocs.
Изучите основы Spring — Spring Data основан на Spring Framework. Посетите веб-сайт Spring.io, чтобы найти множество справочной документации. Если вы только начинаете работать со Spring, попробуйте одно из руководств.
Если вы выполняете обновление, ознакомьтесь с примечаниями к выпуску Spring Data JPA и прокрутите вниз до того, который вы рассматриваете. Подробности смотрите там. (Также ознакомьтесь с последней стабильной версией)
Задайте вопрос — мы отслеживаем stackoverflow.com на предмет вопросов, отмеченных тегом spring-data-jpa
. Вы также можете пообщаться с сообществом Gitter.
Сообщайте об ошибках Spring Data JPA в системе отслеживания проблем GitHub.
Spring Data использует GitHub в качестве системы отслеживания проблем для записи ошибок и запросов функций. Если вы хотите поднять проблему, следуйте приведенным ниже рекомендациям:
Прежде чем регистрировать ошибку, выполните поиск в системе отслеживания проблем, чтобы узнать, не сообщал ли кто-нибудь уже о проблеме.
Если проблема еще не существует, создайте новую проблему.
Пожалуйста, предоставьте как можно больше информации в отчете о проблеме. Нам хотелось бы знать версию Spring Data, которую вы используете, и версию JVM, полную трассировку стека и любую соответствующую информацию о конфигурации.
Если вам нужно вставить код или включить трассировку стека, отформатируйте его как код, используя тройной обратный апостроф.
Если возможно, попробуйте создать тестовый пример или проект, воспроизводящий проблему. Прикрепите ссылку на свой код или сжатый файл, содержащий ваш код. Если возможно, используйте базу данных в памяти или настройте базу данных с помощью тест-контейнеров.
Вам не нужно выполнять сборку из исходного кода, чтобы использовать Spring Data (бинарные файлы в repo.spring.io), но если вы хотите опробовать новейшие и лучшие версии, Spring Data можно легко собрать с помощью оболочки maven. Вам также потребуется JDK 17 или выше.
$ ./mvnw clean install
Если вы хотите выполнять сборку с помощью обычной команды mvn
, вам понадобится Maven v3.8.0 или выше.
Также см. CONTRIBUTING.adoc, если вы хотите отправить запросы на включение, и, в частности, подпишите Соглашение участника перед первым нетривиальным изменением.
При сборке документации также создается проект без проведения тестов.
$ ./mvnw clean install -Pantora
Сгенерированная документация доступна по адресу target/antora/site/index.html
.
Сайт Spring.io содержит несколько руководств, которые шаг за шагом показывают, как использовать Spring Data:
Доступ к данным с помощью JPA. Узнайте, как работать с сохранением данных JPA с помощью Spring Data JPA.
Доступ к данным JPA с помощью REST — это руководство по созданию веб-службы REST, предоставляющей данные, хранящиеся в JPA, через репозитории.
Примеры данных Spring содержат примеры проектов, в которых более подробно объясняются конкретные функции.
Spring Data JPA — это программное обеспечение с открытым исходным кодом, выпущенное под лицензией Apache 2.0.