日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

使用Spring Data的Apache Ignite

發布時間:2023/12/3 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Spring Data的Apache Ignite 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring Data提供了一種統一而簡單的方法來訪問不同類型的持久性存儲,關系數據庫系統和NoSQL數據存儲。 它位于JPA之上,添加了另一層抽象并定義了基于標準的設計以在Spring上下文中支持持久層。

Apache Ignite IgniteRepository實現了Spring Data CrudRepository接口并擴展了CrudRepository的基本功能,該功能又支持:

  • 特定類型存儲庫上的基本CRUD操作。
  • 通過Spring Data API訪問Apache Ignite SQL網格。
  • 使用Spring Data的存儲庫,您只需要編寫一個帶有finder方法的接口來查詢對象。 用于處理對象的所有CRUD方法將自動提供。 舉個例子:

    @RepositoryConfig(cacheName = "DogCache") public interface DogRepository extends IgniteRepository<Dog, Long> {List<Dog> getDogByName(String name);Dog getDogById (Long id); }

    在本文中,我們將介紹以下主題:

    • 從頭開始創建一個Maven項目,以將Spring Data與Apache Ignite Grid一起使用。
    • 通過Spring Data框架將一些實體持久保存到Ignite緩存中。

    在開始之前,讓我們在沙盒中介紹項目的先決條件:

  • Java JDK 1.8
  • 點燃2.0版
  • Apache Maven版本> 3.0.3
  • 步驟1

    讓我們先設置沙箱。 創建一個Maven項目或從GitHub存儲庫克隆該項目。

    mvn archetype:create -DgroupId=com.blu.imdg -DartifactId=spring-data

    修改pom.xml,添加以下Maven依賴項:

    <dependency><groupId>org.apache.ignite</groupId><artifactId>ignite-core</artifactId><version>2.0.0</version> </dependency> <dependency><groupId>org.apache.ignite</groupId><artifactId>ignite-spring</artifactId><version>2.0.0</version> </dependency> <dependency><groupId>org.apache.ignite</groupId><artifactId>ignite-spring-data</artifactId><version>2.0.0</version> </dependency> <dependency><groupId>org.apache.ignite</groupId><artifactId>ignite-indexing</artifactId><version>2.0.0</version> </dependency> <dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>1.4.195</version> </dependency>

    注意,maven h2依賴關系是可選的。 如果遇到類似“ org.h2.result.RowFactory”的錯誤,請顯式添加依賴項。

    我們的示例域模型由兩個不同的實體組成:Breed和Dog。

    品種和狗之間的關聯是ManyToOne 。 一只狗只能有一個品種。

    現在,讓我們通過創建Java類并用所需的元信息注釋它們來映射域模型。 讓我們從Breed類開始。

    package com.blu.imdg.model;import org.apache.ignite.cache.query.annotations.QuerySqlField;import java.io.Serializable;public class Breed implements Serializable {@QuerySqlField(index = true)private Long id;@QuerySqlField(index = true)private String name;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Breed{" +"id='" + id + '\'' +", name='" + name + '\'' +'}';} }

    請注意,@ QuerySqlField批注啟用用于SQL查詢的字段。

    創建另一個名為Dog的類,并向其中添加以下內容。

    package com.blu.imdg.model;import org.apache.ignite.cache.query.annotations.QuerySqlField;import java.io.Serializable; import java.sql.Date;public class Dog implements Serializable {@QuerySqlField(index = true)private Long id;@QuerySqlField(index = true)private String name;@QuerySqlField(index = true)private Long breedid;@QuerySqlField(index = true)private Date birthdate;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Long getBreedid() {return breedid;}public void setBreedid(Long breedid) {this.breedid = breedid;}public Date getBirthdate() {return birthdate;}public void setBirthdate(Date birthdate) {this.birthdate = birthdate;}@Overridepublic String toString() {return "Dog{" +"id=" + id +", name='" + name + '\'' +", breedid=" + breedid +", birthdate=" + birthdate +'}';} }

    現在,讓我們為之前創建的所有pojo創建Spring存儲庫。

    package com.blu.imdg.repositories;import com.blu.imdg.model.Dog; import org.apache.ignite.springdata.repository.IgniteRepository; import org.apache.ignite.springdata.repository.config.RepositoryConfig;import java.util.List;@RepositoryConfig(cacheName = "DogCache") public interface DogRepository extends IgniteRepository<Dog, Long> {List<Dog> getDogByName(String name);Dog getDogById (Long id); }

    應該指定@RepositoryConfig批注以將存儲庫映射到分布式緩存。 另外,我們有兩個查找器方法getDogByName和getDogById用于查詢緩存。

    讓我們為Breed域添加一個類似的存儲庫,如下所示:

    package com.blu.imdg.repositories;import com.blu.imdg.model.Breed; import org.apache.ignite.springdata.repository.IgniteRepository; import org.apache.ignite.springdata.repository.config.Query; import org.apache.ignite.springdata.repository.config.RepositoryConfig; import org.springframework.data.domain.Pageable;import java.util.List;@RepositoryConfig(cacheName = "BreedCache") public interface BreedRepository extends IgniteRepository<Breed, Long> {List<Breed> getAllBreedsByName (String name);@Query("SELECT id FROM Breed WHERE id = ?")List<Long> getById (long id, Pageable pageable); }

    在上面的BreedRepository接口中,我們還使用@Query(queryString)批注,如果由于方法調用而需要執行具體的SQL查詢,則可以使用該批注。

    第5步

    讓我們創建緩存配置類。 創建一個Ignite緩存配置類,并使用@EnableIgniteRepositories批注標記應用程序配置,如下所示:

    package com.blu.imdg.repositories;import com.blu.imdg.model.Breed; import com.blu.imdg.model.Dog; import org.apache.ignite.Ignite; import org.apache.ignite.Ignition; import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.configuration.IgniteConfiguration; import org.apache.ignite.springdata.repository.config.EnableIgniteRepositories; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;@Configuration @EnableIgniteRepositories public class SpringAppConfig {@Beanpublic Ignite igniteInstance() {IgniteConfiguration cfg = new IgniteConfiguration();// Setting some custom name for the node.cfg.setIgniteInstanceName("springDataNode");// Enabling peer-class loading feature.cfg.setPeerClassLoadingEnabled(true);// Defining and creating a new cache to be used by Ignite Spring Data// repository.CacheConfiguration ccfgDog = new CacheConfiguration("DogCache");CacheConfiguration ccfgBreed = new CacheConfiguration("BreedCache");// Setting SQL schema for the cache.ccfgBreed.setIndexedTypes(Long.class, Breed.class);ccfgDog.setIndexedTypes(Long.class, Dog.class);cfg.setCacheConfiguration(new CacheConfiguration[]{ccfgDog, ccfgBreed});return Ignition.start(cfg);} }

    請注意,我們為Breed和Dog緩存使用了兩個單獨的CacheConfiguration。 另外,設置緩存的SQL模式。

    一旦準備好使用所有配置和存儲庫,我們只需要在Spring應用程序上下文中注冊配置即可。

    package com.blu.imdg;import com.blu.imdg.model.Breed; import com.blu.imdg.model.Dog; import com.blu.imdg.repositories.BreedRepository; import com.blu.imdg.repositories.DogRepository; import com.blu.imdg.repositories.SpringAppConfig; import org.springframework.context.annotation.AnnotationConfigApplicationContext;import java.sql.Date; import java.util.List;/*** Hello world!**/ public class App {private static AnnotationConfigApplicationContext ctx;private static BreedRepository breedRepository;private static DogRepository dogRepository;public static void main( String[] args ){System.out.println( "Spring Data Example!" );ctx = new AnnotationConfigApplicationContext();ctx.register(SpringAppConfig.class);ctx.refresh();breedRepository = ctx.getBean(BreedRepository.class);dogRepository = ctx.getBean(DogRepository.class);//fill the repository with data and SaveBreed collie = new Breed();collie.setId(1L);collie.setName("collie");//save Breed with name colliebreedRepository.save(1L, collie);System.out.println("Add one breed in the repository!");// Query the breedList<Breed> getAllBreeds = breedRepository.getAllBreedsByName("collie");for(Breed breed : getAllBreeds){System.out.println("Breed:" + breed);}//Add some dogsDog dina = new Dog();dina.setName("dina");dina.setId(1L);dina.setBreedid(1L);dina.setBirthdate(new Date(System.currentTimeMillis()));//Save DinadogRepository.save(2L,dina);System.out.println("Dog dina save into the cache!");//Query the Dog DinaList<Dog> dogs = dogRepository.getDogByName("dina");for(Dog dog : dogs){System.out.println("Dog:"+ dog);}} }

    上面的代碼片段非常簡單。 首先,我們創建一個Spring注釋的上下文并注冊我們的存儲庫。 接下來,我們獲得對BreedRepository和DogRepository的引用以插入一些數據。 要查詢數據,我們使用基本的CRUD操作或方法,這些操作或方法將自動轉換為Apache Ignite SQL查詢:

    List<Dog> dogs = dogRepository.getDogByName("dina"); for(Dog dog : dogs){System.out.println("Dog:"+ dog); }

    讓我們構建并運行該應用程序。 執行以下命令。

    mvn clean install mvn exec:java -Dexec.mainClass=com.blu.imdg.App

    您應該在控制臺中找到許多日志消息。

    日志消息確認兩個條目(dina和colle-collie)已刷新到Ignite緩存中,并從緩存中檢索了狗Dina 。 讓我們通過Ignite Visor探索緩存。

    為實體創建了兩個不同的緩存:“品種”和“狗”。 如果我們掃描Dog緩存的緩存條目,則應在其上找到以下實體。

    實體Dina已使用Breed牧羊犬的鑰匙保存在緩存中。

    如果要了解有關Apache Ignite的更多信息(使用JPA,Hibernate或MyBatis),請參閱《 使用Apache Ignite進行高性能內存計算 》一書。

    翻譯自: https://www.javacodegeeks.com/2017/07/apache-ignite-spring-data.html

    總結

    以上是生活随笔為你收集整理的使用Spring Data的Apache Ignite的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。