Spring DataでのVavrサポート
1. 概要
このクイックチュートリアルでは、2.0.0 Springビルドスナップショットで追加されたSpring Data –でのVavrのサポートを見ていきます。
具体的には、VavrOptionおよびVavrコレクションをSpring Data JPAリポジトリの戻り値の型として使用する例を示します。
2. Mavenの依存関係
まず、spring-boot-parent依存関係をpom.xmlに追加することで、Spring Dataの構成がはるかに高速になるため、Spring Bootプロジェクトをセットアップしましょう。
org.springframework.boot
spring-boot-starter-parent
2.0.0.RELEASE
明らかに、vavrの依存関係、およびSpring Dataとテストのための他のいくつかの依存関係も必要です。
io.vavr
vavr
0.9.0
org.springframework.boot
spring-boot-starter-data-jpa
com.h2database
h2
org.springframework.boot
spring-boot-starter-test
vavr、spring-boot-starter-data-jpa、spring-boot-starter-test、およびh2の最新バージョンは、MavenCentralからダウンロードできます。
この例では、Spring Dataの自動構成を提供するため、Spring Bootのみを使用しています。 Boot以外のプロジェクトで作業している場合は、Vavrサポートを使用してspring-data-commons依存関係を直接追加できます。
org.springframework.data
spring-data-commons
2.0.0.RELEASE
3. Spring Data JPAVavrを持つリポジトリ
Spring Dataには、VavrのOptionおよびVavrコレクション(Seq、Set、およびMap)を使用したリポジトリクエリメソッドの定義のサポートが含まれるようになりました。 )sを戻り値の型として。
まず、操作する簡単なエンティティクラスを作成しましょう。
@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 {
Option findById(long id);
Seq findByName(String name);
User save(User user);
}
ここでは、0または1つの結果を返すメソッドにVavrOptionを使用し、複数のUserレコードを返すクエリメソッドにVavrSeqを使用しました。 。
また、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 = userRepository.findById(1L);
assertFalse(user.isEmpty());
assertTrue(user.get().getName().equals("John"));
Seq users = userRepository.findByName("John");
assertEquals(2, users.size());
}
}
上記のテストでは、最初に2つのユーザーレコードをデータベースに追加してから、リポジトリのクエリメソッドを呼び出します。 ご覧のとおり、メソッドは正しいVavrオブジェクトを返します。
5. 結論
この簡単な例では、Vavrタイプを使用してSpring Dataリポジトリーを定義する方法を示しました。
いつものように、完全なソースコードはover on GitHubで見つけることができます。