乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Spring認證中國教育管理中心-Spring Data Neo4j教程一

       王先生的內(nèi)容 2022-01-17

      原標題:Spring認證中國教育管理中心-Spring Data Neo4j教程一(Spring中國教育管理中心)

      Spring認證-Spring Data Neo4j教程一

      5. 開始

      我們?yōu)?SDN 提供了 Spring Boot 啟動器。請通過您的依賴管理包含啟動模塊并配置要使用的螺栓 URL,例如org.neo4j.driver.uri=bolt://localhost:7687. 啟動器假定服務(wù)器已禁用身份驗證。由于 SDN 啟動器依賴于 Java 驅(qū)動程序的啟動器,因此有關(guān)配置的所有內(nèi)容在此處也適用。有關(guān)可用屬性的參考,請使用org.neo4j.driver命名空間中的 IDE 自動完成功能或查看專用手冊。

      SDN支持

      • 眾所周知和理解的命令式編程模型(很像 Spring Data JDBC 或 JPA)

      • 基于Reactive Streams的反應(yīng)式編程,包括對反應(yīng)式事務(wù)的完全支持。

      這些都包含在同一個二進制文件中。反應(yīng)式編程模型在數(shù)據(jù)庫端需要 4.0 Neo4j 服務(wù)器,另一方面需要反應(yīng)式 Spring。

      5.1準備數(shù)據(jù)庫

      對于這個例子,我們停留在movie graph 中,因為它隨每個 Neo4j 實例免費提供。

      如果您沒有正在運行的數(shù)據(jù)庫但安裝了 Docker,請運行:

      清單 1. 在 Docker 中啟動一個本地 Neo4j 實例。

      docker run --publish=7474:7474 --publish=7687:7687 -e 'NEO4J_AUTH=neo4j/secret' neo4j:4.3.6

      您現(xiàn)在可以訪問http://localhost:7474。上面的命令將服務(wù)器的密碼設(shè)置為secret. :play movies請注意在提示符 ( )中準備好運行的命令。執(zhí)行它以用一些測試數(shù)據(jù)填充您的數(shù)據(jù)庫。

      5.2.創(chuàng)建一個新的 Spring Boot 項目

      設(shè)置 Spring Boot 項目的最簡單方法是start. (它也集成在主要 IDE 中,以防您不想使用該網(wǎng)站)。

      選擇“Spring Web Starter”以獲取創(chuàng)建基于 Spring 的 Web 應(yīng)用程序所需的所有依賴項。Spring Initializr 將負責為您創(chuàng)建一個有效的項目結(jié)構(gòu),其中包含所選構(gòu)建工具的所有文件和設(shè)置。

      5.2.1使用 Maven

      您可以針對 Spring Initializer 發(fā)出curl請求以創(chuàng)建基本的 Maven 項目:

      清單 2. 使用 Spring Initializr 創(chuàng)建一個基本的 Maven 項目

      curl https://start./starter.tgz   -d dependencies=webflux,actuator,data-neo4j    -d bootVersion=2.5.3   -d baseDir=Neo4jSpringBootExample   -d name=Neo4j%20SpringBoot%20Example | tar -xzvf -

      這將創(chuàng)建一個新文件夾Neo4jSpringBootExample。由于這個啟動器還沒有在初始化器上,您必須手動將以下依賴項添加到您的pom.xml:

      清單 3. 在 Maven 項目中包含
      spring-data-neo4j-spring-boot-starter

      <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-data-neo4j</artifactId></dependency>

      如果是現(xiàn)有項目,您還可以手動添加依賴項。

      5.2.2.使用 Gradle

      思路是一樣的,只是生成一個Gradle項目:

      清單 4. 使用 Spring Initializr 創(chuàng)建一個基本的 Gradle 項目

      curl https://start./starter.tgz   -d dependencies=webflux,actuator,data-neo4j   -d type=gradle-project   -d bootVersion=2.5.3   -d baseDir=Neo4jSpringBootExampleGradle   -d name=Neo4j%20SpringBoot%20Example | tar -xzvf -

      Gradle 的依賴項如下所示,必須添加到build.gradle:

      清單 5. 在 Gradle 項目中包含
      spring-data-neo4j-spring-boot-starter

      dependencies {    implementation 'org.springframework.boot:spring-boot-starter-data-neo4j'}

      如果是現(xiàn)有項目,您還可以手動添加依賴項。

      5.3.配置項目

      現(xiàn)在在您最喜歡的 IDE 中打開這些項目中的任何一個。查找application.properties并配置您的 Neo4j 憑據(jù):

      spring.neo4j.uri=bolt://localhost:7687spring.neo4j.authentication.username=neo4jspring.neo4j.authentication.password=secret

      這是連接到 Neo4j 實例所需的最低限度。

      使用此啟動器時,無需添加驅(qū)動程序的任何編程配置。此啟動器將自動啟用 SDN 存儲庫。

      5.4.在模塊路徑上運行 (Java 9+)

      Spring Data Neo4j 可以在模塊路徑上運行。它的自動模塊名稱是spring.data.neo4j. 由于當前 Spring Data 構(gòu)建設(shè)置的限制,它本身不提供模塊。因此,它使用自動但穩(wěn)定的模塊名稱。但是,它確實依賴于模塊化庫(Cypher-DSL)。由于module-info.java上述限制,我們無法代表您表達對該庫的要求。

      因此,module-info.java您的項目中在模塊路徑上運行 Spring Data Neo4j 6.1+ 所需的最低要求如下:

      清單 6.module-info.java項目中的 A 應(yīng)該在模塊路徑上使用 Spring Data Neo4j

      module your.module {        requires org.neo4j.cypherdsl.core;        requires spring.data.commons;        requires spring.data.neo4j;
      
              opens your.domain to spring.core; 
      
              exports your.domain; 
      }

      Spring Data Neo4j 使用 Spring Data Commons 及其反射功能,因此您spring.core至少需要打開域包。

      我們假設(shè)這里your.domain還包含存儲庫:必須導(dǎo)出這些存儲庫才能被

      spring.beans,spring.context和訪問spring.data.commons。如果您不想將它們導(dǎo)出到世界,您可以將它們限制在這些模塊中。

      5.5.創(chuàng)建您的域

      我們的領(lǐng)域?qū)討?yīng)該完成兩件事:

      • 將圖表映射到對象

      • 提供訪問這些

      5.5.1示例節(jié)點實體

      SDN 完全支持 Java 和dataKotlin 中的類的不可修改實體。因此,我們將在這里關(guān)注不可變實體,清單 7顯示了這樣一個實體。

      SDN 支持 Neo4j Java 驅(qū)動程序支持的所有數(shù)據(jù)類型,請參閱“Cypher 類型系統(tǒng)”一章中將Neo4j 類型映射到本地語言類型。未來的版本將支持額外的轉(zhuǎn)換器。

      清單 7. MovieEntity.java

      import java.util.ArrayList;import java.util.List;import org.springframework.data.neo4j.core.schema.Id;import org.springframework.data.neo4j.core.schema.Node;import org.springframework.data.neo4j.core.schema.Property;import org.springframework.data.neo4j.core.schema.Relationship;import org.springframework.data.neo4j.core.schema.Relationship.Direction;@Node("Movie") public class MovieEntity {        @Id 
              private final String title;        @Property("tagline") 
              private final String description;        @Relationship(type = "ACTED_IN", direction = Direction.INCOMING) 
              private List<Roles> actorsAndRoles;        @Relationship(type = "DIRECTED", direction = Direction.INCOMING)
              private List<PersonEntity> directors = new ArrayList<>();        public MovieEntity(String title, String description) { 
                      this.title = title;                this.description = description;
              }        // Getters omitted for brevity}

      Spring認證-Spring Data Neo4j教程一

      @Node用于將此類標記為托管實體。它還用于配置 Neo4j 標簽。如果您只是使用 plain ,標簽?zāi)J為類的名稱@Node。

      每個實體都必須有一個 id。此處顯示的電影類使用該屬性title作為唯一的業(yè)務(wù)鍵。如果您沒有這樣的唯一密鑰,您可以使用 和 的組合@Id來@GeneratedValue

      配置 SDN 以使用 Neo4j 的內(nèi)部 id。我們還提供 UUID 的生成器。

      這顯示@Property了為字段使用與圖形屬性不同的名稱的一種方式。

      這定義了一個關(guān)系到一個類的類型PersonEntity和關(guān)系類型ACTED_IN

      這是您的應(yīng)用程序代碼要使用的構(gòu)造函數(shù)。

      作為一般評論:使用內(nèi)部生成的 id 的不可變實體有點矛盾,因為 SDN 需要一種方法來使用數(shù)據(jù)庫生成的值設(shè)置字段。

      如果您找不到好的業(yè)務(wù)密鑰或不想使用生成器生成 ID,這里是使用內(nèi)部生成的 id 以及常規(guī)構(gòu)造函數(shù)和所謂的wither -Method 的同一實體,SDN 使用該方法:

      清單 8. MovieEntity.java

      import org.springframework.data.neo4j.core.schema.GeneratedValue;import org.springframework.data.neo4j.core.schema.Id;import org.springframework.data.neo4j.core.schema.Node;import org.springframework.data.neo4j.core.schema.Property;import org.springframework.data.annotation.PersistenceConstructor;@Node("Movie")public class MovieEntity {        @Id @GeneratedValue
              private Long id;        private final String title;        @Property("tagline")
              private final String description;        public MovieEntity(String title, String description) { 
                      this.id = null;                this.title = title;                this.description = description;
              }        public MovieEntity withId(Long id) { 
                      if (this.id.equals(id)) {                        return this;
                      } else {
                              MovieEntity newObject = new MovieEntity(this.title, this.description);
                              newObject.id = id;                        return newObject;
                      }
              }
      }

      Spring認證-Spring Data Neo4j教程一

      這是您的應(yīng)用程序代碼要使用的構(gòu)造函數(shù)。它將 id 設(shè)置為 null,因為不應(yīng)操縱包含內(nèi)部 id 的字段。

      這就是所謂的-屬性凋零id。它創(chuàng)建一個新實體并相應(yīng)地設(shè)置字段,而不修改原始實體,從而使其不可變。

      您當然可以將 SDN 與Kotlin一起使用,并使用 Kotlin 的數(shù)據(jù)類對您的域進行建模。 如果您想或需要純粹地留在 Java 中,Project Lombok是一個替代方案。

      5.5.2.聲明 Spring Data 存儲庫

      您在這里基本上有兩個選擇:您可以使用 SDN 以與商店無關(guān)的方式工作,并使您的域特定擴展之一

      • org.springframework.data.repository.Repository

      • org.springframework.data.repository.CrudRepository

      • org.springframework.data.repository.reactive.ReactiveCrudRepository

      • org.springframework.data.repository.reactive.ReactiveSortingRepository

      相應(yīng)地選擇命令式和反應(yīng)式。

      雖然技術(shù)上不禁止,但不建議在同一個應(yīng)用程序中混合命令式和反應(yīng)式數(shù)據(jù)庫訪問。我們不會在這種情況下為您提供支持。

      另一種選擇是選擇特定于商店的實現(xiàn)并獲得我們開箱即用的所有方法。這種方法的優(yōu)點也是它最大的缺點:一旦出來,所有這些方法都將成為您 API 的一部分。大多數(shù)時候,拿走東西比事后添加東西更難。此外,使用商店細節(jié)會將您的商店泄漏到您的域中。從性能的角度來看,沒有懲罰。

      適合上述任何電影實體的反應(yīng)式存儲庫如下所示:

      清單 9. MovieRepository.java

      import reactor.core.publisher.Mono;import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository;public interface MovieRepository extends ReactiveNeo4jRepository<MovieEntity, String> {        Mono<MovieEntity> findOneByTitle(String title);
      }

      測試響應(yīng)式代碼是使用
      reactor.test.StepVerifier. 查看Project Reactor的相應(yīng)文檔或查看我們的示例代碼。

        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多