精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用JPA訪問數據的過程

「Spring」認證安全架構 ? 來源:Spring」認證安全架構 ? 作者:Spring」認證安全架 ? 2022-09-06 15:48 ? 次閱讀

本指南將引導您完成構建應用程序的過程,該應用程序使用#spring# #spring認證# Spring Data JPA 在關系數據庫中存儲和檢索數據。

你將建造什么

您將構建一個將CustomerPOJO(普通舊 Java 對象)存儲在基于內存的數據庫中的應用程序。

你需要什么

  • 約15分鐘
  • 最喜歡的文本編輯器或 IDE
  • JDK 1.8或更高版本
  • Gradle 4+或Maven 3.2+
  • 您還可以將代碼直接導入 IDE:
    • 彈簧工具套件 (STS)
    • IntelliJ IDEA

如何完成本指南

像大多數 Spring入門指南一樣,您可以從頭開始并完成每個步驟,也可以繞過您已經熟悉的基本設置步驟。無論哪種方式,您最終都會得到工作代碼。

從頭開始,請繼續從 Spring Initializr 開始。

跳過基礎知識,請執行以下操作:

  • 下載并解壓縮本指南的源存儲庫,或使用Git克隆它:git clone https://github.com/spring-guides/gs-accessing-data-jpa.git
  • 光盤進入gs-accessing-data-jpa/initial
  • 跳轉到定義一個簡單實體。

完成后,您可以對照中的代碼檢查結果
gs-accessing-data-jpa/complete

從 Spring Initializr 開始

您可以使用這個預先初始化的項目并單擊 Generate 下載 ZIP 文件。此項目配置為適合本教程中的示例。

手動初始化項目:

  1. 導航到https://start.spring.io。該服務提取應用程序所需的所有依賴項,并為您完成大部分設置。
  2. 選擇 Gradle 或 Maven 以及您要使用的語言。本指南假定您選擇了 Java。
  3. 單擊Dependencies并選擇Spring Data JPA,然后選擇H2 Database
  4. 單擊生成
  5. 下載生成的 ZIP 文件,該文件是根據您的選擇配置的 Web 應用程序的存檔。

如果您的 IDE 具有 Spring Initializr 集成,您可以從您的 IDE 完成此過程。

你也可以從 Github 上 fork 項目并在你的 IDE 或其他編輯器中打開它。

定義一個簡單的實體

在此示例中,您存儲Customer對象,每個對象都被注釋為 JPA 實體。以下清單顯示了 Customer 類(在 中
src/main/java/com/example/accessingdatajpa/Customer.java):

package com.example.accessingdatajpa;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Customer {

  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private Long id;
  private String firstName;
  private String lastName;

  protected Customer() {}

  public Customer(String firstName, String lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
  }

  @Override
  public String toString() {
    return String.format(
        "Customer[id=%d, firstName='%s', lastName='%s']",
        id, firstName, lastName);
  }

  public Long getId() {
    return id;
  }

  public String getFirstName() {
    return firstName;
  }

  public String getLastName() {
    return lastName;
  }
}復制

這里有一個Customer具有三個屬性的類:idfirstNamelastName。您還有兩個構造函數。默認構造函數的存在只是為了 JPA。您不直接使用它,因此將其指定為protected。另一個構造函數是您用來創建Customer要保存到數據庫的實例的構造函數。

該類Customer用 注釋@Entity,表示它是一個 JPA 實體。(由于不@Table存在注解,假設該實體映射到名為 的表Customer。)

Customer對象的屬性id帶有注釋,@Id以便 JPA 將其識別為對象的 ID。該id屬性還帶有注釋@GeneratedValue以指示應自動生成 ID。

其他兩個屬性firstNamelastName未注釋。假設它們被映射到與屬性本身共享相同名稱的列。

方便的toString()方法打印出客戶的屬性。

創建簡單查詢

Spring Data JPA 專注于使用 JPA 將數據存儲在關系數據庫中。它最引人注目的功能是能夠在運行時從存儲庫接口自動創建存儲庫實現。

要了解它是如何工作的,請創建一個與Customer實體一起使用的存儲庫接口,如以下清單(in
src/main/java/com/example/accessingdatajpa/CustomerRepository.java)所示:

package com.example.accessingdatajpa;

import java.util.List;

import org.springframework.data.repository.CrudRepository;

public interface CustomerRepository extends CrudRepository {

  List findByLastName(String lastName);

  Customer findById(long id);
}復制,>

CustomerRepository擴展CrudRepository接口。它使用的實體類型和 IDCustomer以及Long,在通用參數中指定CrudRepository。通過擴展CrudRepositoryCustomerRepository繼承了幾種處理Customer持久性的方法,包括保存、刪除和查找Customer實體的方法。

Spring Data JPA 還允許您通過聲明方法簽名來定義其他查詢方法。例如,CustomerRepository包括findByLastName()方法。

在典型的 Java 應用程序中,您可能希望編寫一個實現CustomerRepository. 然而,這正是 Spring Data JPA 如此強大的原因:您無需編寫存儲庫接口的實現。Spring Data JPA 在您運行應用程序時創建一個實現。

現在你可以連接這個例子,看看它是什么樣子的!

創建應用程序類

Spring Initializr 為應用程序創建一個簡單的類。以下清單顯示了 Initializr 為本示例創建的類(在 中
src/main/java/com/example/accessingdatajpa/AccessingDataJpaApplication.java):

package com.example.accessingdatajpa;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class AccessingDataJpaApplication {

  public static void main(String[] args) {
    SpringApplication.run(AccessingDataJpaApplication.class, args);
  }

}復制

@SpringBootApplication是一個方便的注釋,它添加了以下所有內容:

  • @Configuration: 將類標記為應用程序上下文的 bean 定義源。
  • @EnableAutoConfiguration:告訴 Spring Boot 根據類路徑設置、其他 bean 和各種屬性設置開始添加 bean。例如,如果spring-webmvc位于類路徑上,則此注釋將應用程序標記為 Web 應用程序并激活關鍵行為,例如設置DispatcherServlet.
  • @ComponentScan: 告訴 Spring 在包中查找其他組件、配置和服務com/example,讓它找到控制器

main()方法使用 Spring Boot 的SpringApplication.run()方法來啟動應用程序。您是否注意到沒有一行 XML?也沒有web.xml文件。這個 Web 應用程序是 100% 純 Java,您不必處理任何管道或基礎設施的配置。

現在您需要修改 Initializr 為您創建的簡單類。要獲得輸出(在本例中為控制臺),您需要設置一個記錄器。然后您需要設置一些數據并使用它來生成輸出。以下清單顯示了完成的
AccessingDataJpaApplication類(在 中
src/main/java/com/example/accessingdatajpa/AccessingDataJpaApplication.java):

package com.example.accessingdatajpa;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class AccessingDataJpaApplication {

  private static final Logger log = LoggerFactory.getLogger(AccessingDataJpaApplication.class);

  public static void main(String[] args) {
    SpringApplication.run(AccessingDataJpaApplication.class);
  }

  @Bean
  public CommandLineRunner demo(CustomerRepository repository) {
    return (args) -> {
      // save a few customers
      repository.save(new Customer("Jack", "Bauer"));
      repository.save(new Customer("Chloe", "O'Brian"));
      repository.save(new Customer("Kim", "Bauer"));
      repository.save(new Customer("David", "Palmer"));
      repository.save(new Customer("Michelle", "Dessler"));

      // fetch all customers
      log.info("Customers found with findAll():");
      log.info("-------------------------------");
      for (Customer customer : repository.findAll()) {
        log.info(customer.toString());
      }
      log.info("");

      // fetch an individual customer by ID
      Customer customer = repository.findById(1L);
      log.info("Customer found with findById(1L):");
      log.info("--------------------------------");
      log.info(customer.toString());
      log.info("");

      // fetch customers by last name
      log.info("Customer found with findByLastName('Bauer'):");
      log.info("--------------------------------------------");
      repository.findByLastName("Bauer").forEach(bauer -> {
        log.info(bauer.toString());
      });
      // for (Customer bauer : repository.findByLastName("Bauer")) {
      //  log.info(bauer.toString());
      // }
      log.info("");
    };
  }

}復制

該類
AccessingDataJpaApplication包括一個通過一些測試的demo()方法。CustomerRepository首先,它CustomerRepository從 Spring 應用程序上下文中獲取 。然后它會保存一些Customer對象,演示該save()方法并設置一些要使用的數據。接下來,它調用從數據庫findAll()中獲取所有Customer對象。然后它調用以通過其 IDfindById()獲取單個。Customer最后,它調用findByLastName()查找所有姓氏為“Bauer”的客戶。該demo()方法返回一個CommandLineRunner在應用程序啟動時自動運行代碼的 bean。

默認情況下,Spring Boot 啟用 JPA 存儲庫支持并查找所在的包(及其子包)@SpringBootApplication。如果您的配置具有位于不可見包中的 JPA 存儲庫接口定義,則可以通過使用@EnableJpaRepositories及其類型安全basePackageClasses=MyRepository.class參數指出備用包。

構建一個可執行的 JAR

您可以使用 Gradle 或 Maven 從命令行運行應用程序。您還可以構建一個包含所有必要依賴項、類和資源的單個可執行 JAR 文件并運行它。構建可執行 jar 可以在整個開發生命周期、跨不同環境等中輕松地作為應用程序交付、版本化和部署服務。

如果您使用 Gradle,則可以使用./gradlew bootRun. 或者,您可以使用構建 JAR 文件./gradlew build,然后運行 ?JAR 文件,如下所示:

java -jar build/libs/gs-accessing-data-jpa-0.1.0.jar

如果您使用 Maven,則可以使用./mvnw spring-boot:run. 或者,您可以使用構建 JAR 文件,./mvnw clean package然后運行該 JAR 文件,如下所示:

java -jar 目標/gs-accessing-data-jpa-0.1.0.jar

此處描述的步驟創建了一個可運行的 JAR。您還可以構建經典的 WAR 文件。

運行應用程序時,您應該會看到類似于以下內容的輸出:

== 使用 findAll() 找到的客戶:
客戶[id=1, firstName='Jack', lastName='Bauer']
客戶[id=2, firstName='Chloe', lastName='O'Brian']
客戶[id=3, firstName='Kim', lastName='Bauer']
客戶[id=4, firstName='David', lastName='Palmer']
客戶[id=5, firstName='Michelle', lastName='Dessler']

== 使用 findById(1L) 找到客戶:
客戶[id=1, firstName='Jack', lastName='Bauer']

== 使用 findByLastName('Bauer') 找到客戶:
客戶[id=1, firstName='Jack', lastName='Bauer']
客戶[id=3, firstName='Kim', lastName='Bauer']

概括

恭喜!您已經編寫了一個簡單的應用程序,該應用程序使用 Spring Data JPA 將對象保存到數據庫并從數據庫中獲取它們,而無需編寫具體的存儲庫實現。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3765

    瀏覽量

    64276
  • 程序
    +關注

    關注

    116

    文章

    3777

    瀏覽量

    80851
  • spring
    +關注

    關注

    0

    文章

    338

    瀏覽量

    14310
收藏 人收藏

    評論

    相關推薦

    JPA實體類中的注解介紹

    今天給大家介紹一下 JPA 實體類中的注解,希望能對大家有幫助。 基本注解 @Entity 標注于實體類聲明語句之前,指出該 Java 類為實體類,將映射到指定的數據庫表。 name(可選):實體
    的頭像 發表于 09-25 14:42 ?665次閱讀

    labvies訪問數據

    LabVIEW 中利用LabSQL 訪問數據庫 虛擬儀器VI(virtual instruments)是National Instruments 公司在其產品LabVIEW 中首先提出的創新
    發表于 08-26 10:19

    遠程訪問數據庫時發生這樣的現象

    在同一局外一臺電腦上也通過labview程序進行訪問,并且通過程序對數據庫文件進行操作,碰到了以上問題,問題在文檔里面,是兩張圖片,多指教。特別說明:數據庫文件已經共享,并且其只讀和隱
    發表于 10-12 11:41

    JPA分頁查詢的常用方法

    JPA分頁查詢與條件分頁查詢
    發表于 10-23 17:10

    使用jpa和thymeleaf做增刪改查示例

    【本人禿頂程序員】springboot專輯:springboot+jpa+thymeleaf增刪改查示例
    發表于 04-01 11:49

    springboot spring data jpa使用總結

    【本人禿頂程序員】springboot專輯:spring data jpa的使用
    發表于 04-15 11:38

    三種訪問過程映像的方法

    硬實時的需求。用戶可以通過python等高級語言編寫程序,并且可以通過存儲器中的過程映像便捷的寫入或者讀取所有當前過程值。本文將介紹從過程映像中訪問
    發表于 02-02 16:40

    DataAbility的使用方法及訪問數據庫的過程

    DataAbility介紹:使用Data模板的Ability(以下簡稱“Data”)有助于應用管理其自身和其他應用存儲數據訪問,并提供與其他應用共享數據的方法。Data既可用于同設備不同應用的
    發表于 04-06 10:32

    Oracle數據庫網絡安全訪問機制

    本文主要分析了Oracle 客戶端通過Net8 訪問數據庫服務器過程,闡述了Oracle 數據庫的網絡訪問機制以及Net8 在實現Oracl
    發表于 08-29 10:20 ?20次下載

    基于OPC的數據訪問服務器開發

    基于OPC的數據訪問服務器開發一文以針對一種PCI總線CAN通信卡設計的 OPC 數據訪問服務器為編程實例,詳細介紹了OPC數據
    發表于 07-18 16:39 ?35次下載
    基于OPC的<b class='flag-5'>數據</b><b class='flag-5'>訪問</b>服務器開發

    基于XACML訪問控制系統設計

    在云計算中用戶訪問云計算平臺的過程實際上就是主體(云用戶)訪問客體(云計算平臺)的過程。而所有用戶的數據信息均存儲在云計算平臺中,也就是云計
    發表于 11-09 15:05 ?4次下載
    基于XACML<b class='flag-5'>訪問</b>控制系統設計

    一文詳談Spring JPA

    大家好,今天我和大家聊一下關于Spring JPA 的相關知識,我們先來了解下什么是 JPA
    的頭像 發表于 06-30 17:29 ?2190次閱讀

    Delphi數據訪問組件方案

    適用于任何數據庫的更快、更可靠的數據連接解決方案 Delphi 數據訪問組件 Delphi數據訪問
    的頭像 發表于 06-26 10:02 ?793次閱讀
    Delphi<b class='flag-5'>數據</b><b class='flag-5'>訪問</b>組件方案

    JPA基礎概念

    相信大部分java小伙伴在日常開發過程中,在存儲操作層都會選擇更容易上手的jpa,各種封裝,通過注解等方式,簡化了大量的代碼內容,同時提升了開發效率,但是(敲黑板,永遠都躲不開的但是...)相應也將
    的頭像 發表于 10-08 14:36 ?668次閱讀
    <b class='flag-5'>JPA</b>基礎概念

    CDN工作原理和訪問過程

    ,源站域名,然后進入到自己域名的DNS配置信息,將 A 記錄修改成 CNAME 記錄即可。 CDN訪問過程 image.png 1、用戶訪問圖片內容,先經過 本地DNS 解析,如果 LDNS 命中
    的頭像 發表于 10-09 15:41 ?1396次閱讀
    CDN工作原理和<b class='flag-5'>訪問過程</b>