Spring DataでのVavrサポート
データ]
-
リンク:/tag/vavr/[Vavr]
1概要
このクイックチュートリアルでは、
2.0.0
Springビルドスナップショットで追加された
Spring Dataの
Vavr__のサポートについて見ていきます。
具体的には、
Spring Data JPA
リポジトリの戻り型として
Vavr
Option
および
Vavr
コレクションを使用する例を示します。
2 Mavenの依存関係
まず、
Spring-boot-parent
依存関係を
pom.xml
に追加することで、
Spring Data
の設定がはるかに速くなるため、
Spring Boot
プロジェクトを設定しましょう。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath/>
</parent>
明らかに、私たちは
vavr
依存関係、および
Spring Data
とテストのための他のいくつかの依存関係も必要です。
<dependency>
<groupId>io.vavr</groupId>
<artifactId>vavr</artifactId>
<version>0.9.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
vavr
、https://の最新バージョンsearch.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22spring-boot-starter-data-jpa%22[spring-boot-starter-data-jpa]、https://search.maven。 org/classic/#検索%7Cga%7C1%7Ca%3A%22spring-boot-starter-test%22%20AND%20g%3A%22org.springframework.boot%22[spring-boot-starter-test]およびhttps://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22h2%22%20AND%20g%3A%22com.h2database%22[h2]はMaven Centralからダウンロードできます。
この例では、
Spring Data
自動設定を提供するため、
Spring Boot
のみを使用しています。
Boot
以外のプロジェクトで作業している場合は、
Vavr
サポートを使用して
spring-data-commons
依存関係を直接追加できます。
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
3
Vavr
を使用した
Spring Data JPA
リポジトリ
Spring Data
には、
Vavr
sの
Option
および
Vavr
コレクション(戻り値の型として
Seq
、
Set
、および
Map
)を使用してリポジトリクエリメソッドを定義するためのサポートが追加されました。
まず、操作する簡単なエンティティクラスを作成しましょう。
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
//standard constructor, getters, setters
}
次に、
Repository
インターフェースを実装し、2つのクエリメソッドを定義して
JPA
リポジトリを作成しましょう。
public interface VavrUserRepository extends Repository<User, Long> {
Option<User> findById(long id);
Seq<User> findByName(String name);
User save(User user);
}
ここでは、0個または1個の結果を返すメソッドに
Vavr
Option
を使用し、複数の
User
レコードを返すクエリメソッドに
Vavr
Seq
を使用しました。
また、
Spring Data
を自動設定してアプリケーションをブートストラップするためのメインの
Spring Boot
クラスも必要です。
@SpringBootApplication
public class Application {
public static void main(String[]args) {
SpringApplication.run(Application.class, args);
}
}
h2
依存関係を追加したので、
Spring Boot
はインメモリ
H2
データベースを使用して
DataSource
を自動設定します。
4
JPA
リポジトリをテストする
リポジトリのメソッドを検証するためのJUnitテストを追加しましょう。
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class VavrRepositoryIntegrationTest {
@Autowired
private VavrUserRepository userRepository;
@Before
public void setup() {
User user1 = new User();
user1.setName("John");
User user2 = new User();
user2.setName("John");
userRepository.save(user1);
userRepository.save(user2);
}
@Test
public void whenAddUsers__thenGetUsers() {
Option<User> user = userRepository.findById(1L);
assertFalse(user.isEmpty());
assertTrue(user.get().getName().equals("John"));
Seq<User> users = userRepository.findByName("John");
assertEquals(2, users.size());
}
}
上記のテストでは、最初に2つのユーザーレコードをデータベースに追加してから、リポジトリのクエリメソッドを呼び出します。ご覧のとおり、メソッドは正しい
Vavr
オブジェクトを返します。
5結論
この簡単な例では、
Vavr
型を使用して
Spring Data
リポジトリを定義する方法を示しました。
いつものように、完全なソースコードはhttps://github.com/eugenp/tutorials/tree/master/vavr[over on GitHub]にあります。