真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用Java持久化API

這篇文章主要介紹了如何使用Java持久化API,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)建站從2013年成立,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元曲水做網(wǎng)站,已為上家服務(wù),為曲水各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575

對(duì)應(yīng)用開(kāi)發(fā)者來(lái)說(shuō),Java 持久化 APIJava Persistence API(JPA)是一項(xiàng)重要的 java 功能,需要透徹理解。它為 Java 開(kāi)發(fā)人員定義了如何將對(duì)象的方法調(diào)用轉(zhuǎn)換為訪問(wèn)、持久化及管理存儲(chǔ)在 NOSQL 和關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)的方案。

本文通過(guò)構(gòu)建自行車(chē)借貸服務(wù)的教程示例來(lái)詳細(xì)研究 JPA。此示例會(huì)使用 Spring Boot 框架、MongoDB 數(shù)據(jù)庫(kù)(已經(jīng)不開(kāi)源)和 Maven 包管理來(lái)構(gòu)建一個(gè)大型應(yīng)用程序,并且構(gòu)建一個(gè)創(chuàng)建、讀取、更新和刪除(CRUD)層。這兒我選擇 NetBeans 11 作為我的 IDE。

此教程僅從開(kāi)源的角度來(lái)介紹 Java 持久化 API 的工作原理,不涉及其作為工具的使用說(shuō)明。這全是關(guān)于編寫(xiě)應(yīng)用程序模式的學(xué)習(xí),但對(duì)于理解具體的軟件實(shí)現(xiàn)也很益處??梢詮奈业?GitHub 倉(cāng)庫(kù)來(lái)獲取相關(guān)代碼。

Java: 不僅僅是“豆子”

Java 是一門(mén)面向?qū)ο蟮木幊陶Z(yǔ)言,自 1996 年發(fā)布第一版 Java  開(kāi)發(fā)工具(JDK)起,已經(jīng)變化了很多很多。要了解其各種發(fā)展及其虛擬機(jī)本身就是一堂歷史課。簡(jiǎn)而言之,和 Linux  內(nèi)核很相似,自發(fā)布以來(lái),該語(yǔ)言已經(jīng)向多個(gè)方向分支發(fā)展。有對(duì)社區(qū)免費(fèi)的標(biāo)準(zhǔn)版本、有針對(duì)企業(yè)的企業(yè)版本及由多家供應(yīng)商提供的開(kāi)源替代品。主要版本每六個(gè)月發(fā)布一次,其功能往往差異很大,所以確認(rèn)選用版本前得先做些研究。

總而言之,Java 的歷史很悠久。本教程重點(diǎn)介紹 Java 11 的開(kāi)源實(shí)現(xiàn) JDK 11。因其是仍然有效的長(zhǎng)期支持版本之一。

  • Spring Boot是由 Pivotal 公司開(kāi)發(fā)的大型 Spring  框架的一個(gè)模塊。Spring 是 Java 開(kāi)發(fā)中一個(gè)非常流行的框架。它支持各種框架和配置,也為 WEB 應(yīng)用程序及安全提供了保障。Spring  Boot 為快速構(gòu)建各種類(lèi)型的 Java 項(xiàng)目提供了基本的配置。本教程使用 Spring Boot  來(lái)快速編寫(xiě)控制臺(tái)應(yīng)用程序并針對(duì)數(shù)據(jù)庫(kù)編寫(xiě)測(cè)試用例。

  • Maven是由 Apache 開(kāi)發(fā)的項(xiàng)目/包管理工具。Maven 通過(guò) POM.xml 文件來(lái)管理包及其依賴(lài)項(xiàng)。如果你使用過(guò) NPM 的話,可能會(huì)非常熟悉包管理器的功能。此外 Maven 也用來(lái)進(jìn)行項(xiàng)目構(gòu)建及生成功能報(bào)告。

  • Lombok 是一個(gè)庫(kù),它通過(guò)在對(duì)象文件里面添加注解來(lái)自動(dòng)創(chuàng)建 getters/setters 方法。像 C# 這些語(yǔ)言已經(jīng)實(shí)現(xiàn)了此功能,Lombok 只是把此功能引入 Java 語(yǔ)言而已。

  • NetBeans是一款很流行的開(kāi)源 IDE,專(zhuān)門(mén)用于 Java 開(kāi)發(fā)。它的許多工具都隨著 Java SE 和 EE 的版本更新而更新。

我們會(huì)用這組工具為一個(gè)虛構(gòu)自行車(chē)商店創(chuàng)建一個(gè)簡(jiǎn)單的應(yīng)用程序。會(huì)實(shí)現(xiàn)對(duì) CustomerBike 對(duì)象集合的的插入操作。

釀造完美

導(dǎo)航到 Spring Initializr 頁(yè)面。該網(wǎng)站可以生成基于 Spring Boot 和其依賴(lài)項(xiàng)的基本項(xiàng)目。選擇以下選項(xiàng):

  1. 鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)

  2. 項(xiàng)目:Maven 工程

  3. 語(yǔ)言:Java

  4. Spring Boot:2.1.8(或最穩(wěn)定版本)

  5. 項(xiàng)目元數(shù)據(jù):無(wú)論你使用什么名字,其命名約定都是像 com.stephb 這樣的。

    • 你可以保留 Artifact 名字為 “Demo”。

  6. 依賴(lài)項(xiàng):添加:

    • Spring Data MongoDB

    • Lombok

點(diǎn)擊 下載,然后用你的 IDE(例如 NetBeans) 打開(kāi)此新項(xiàng)目。

模型層概要

在項(xiàng)目里面,模型model代表從數(shù)據(jù)庫(kù)里取出的信息的具體對(duì)象。我們關(guān)注兩個(gè)對(duì)象:CustomerBike。首先,在 src 目錄創(chuàng)建 dto 目錄;然后,創(chuàng)建兩個(gè)名為 Customer.javaBike.java 的 Java 類(lèi)對(duì)象文件。其結(jié)構(gòu)如下示:

package com.stephb.JavaMongo.dto; import lombok.Getter;import lombok.Setter;import org.springframework.data.annotation.Id; /** * * @author stephon */@Getter @Setterpublic class Customer {         private @Id String id;        private String emailAddress;        private String firstName;        private String lastName;        private String address;        }

Customer.Java

package com.stephb.JavaMongo.dto; import lombok.Getter;import lombok.Setter;import org.springframework.data.annotation.Id; /** * * @author stephon */@Getter @Setterpublic class Bike {        private @Id String id;        private String modelNumber;        private String color;        private String description;         @Override        public String toString() {                return "This bike model is " + this.modelNumber + " is the color " + this.color + " and is " + description;        }}

Bike.java

如你所見(jiàn),對(duì)象中使用 Lombok 注解來(lái)為定義的屬性properties/特性attributes生成 getters/setters 方法。如果你不想對(duì)該類(lèi)的所有特性都生成 getters/setters 方法,可以在屬性上專(zhuān)門(mén)定義這些注解。這兩個(gè)類(lèi)會(huì)變成容器,里面攜帶有數(shù)據(jù),無(wú)論在何處想顯示信息都可以使用。

配置數(shù)據(jù)庫(kù)

我使用 Mongo Docker 容器來(lái)進(jìn)行此次測(cè)試。如果你的系統(tǒng)上已經(jīng)安裝了 MongoDB,則不必運(yùn)行 Docker 實(shí)例。你也可以登錄其官網(wǎng),選擇系統(tǒng)信息,然后按照安裝說(shuō)明來(lái)安裝 MongoDB。

安裝后,就可以使用命令行、GUI(例如 MongoDB Compass)或用于連接數(shù)據(jù)源的 IDE 驅(qū)動(dòng)程序來(lái)與新的 MongoDB 服務(wù)器進(jìn)行交互。到目前為止,可以開(kāi)始定義數(shù)據(jù)層了,用來(lái)拉取、轉(zhuǎn)換和持久化數(shù)據(jù)。需要設(shè)置數(shù)據(jù)庫(kù)訪問(wèn)屬性,請(qǐng)導(dǎo)航到程序中的 applications.properties 文件,然后添加如下內(nèi)容:

spring.data.mongodb.host=localhostspring.data.mongodb.port=27017spring.data.mongodb.database=BikeStore
定義數(shù)據(jù)訪問(wèn)對(duì)象/數(shù)據(jù)訪問(wèn)層

數(shù)據(jù)訪問(wèn)層data access layer(DAL)中的數(shù)據(jù)訪問(wèn)對(duì)象data access objects(DAO)定義了與數(shù)據(jù)庫(kù)中的數(shù)據(jù)的交互過(guò)程。令人驚嘆的就是在使用 spring-boot-starter 后,查詢(xún)數(shù)據(jù)庫(kù)的大部分工作已經(jīng)完成。

讓我們從 Customer DAO 開(kāi)始。在 src 下的新目錄 dao 中創(chuàng)建一個(gè)接口文件,然后再創(chuàng)建一個(gè)名為 CustomerRepository.java 的 Java 類(lèi)文件,其內(nèi)容如下示:

package com.stephb.JavaMongo.dao; import com.stephb.JavaMongo.dto.Customer;import java.util.List;import org.springframework.data.mongodb.repository.MongoRepository; /** * * @author stephon */public interface CustomerRepository extends MongoRepository{        @Override        public List findAll();        public List findByFirstName(String firstName);        public List findByLastName(String lastName);}

這個(gè)類(lèi)是一個(gè)接口,擴(kuò)展或繼承于 MongoRepository 類(lèi),而 MongoRepository 類(lèi)依賴(lài)于 DTO (Customer.java)和一個(gè)字符串,它們用來(lái)實(shí)現(xiàn)自定義函數(shù)查詢(xún)功能。因?yàn)槟阋牙^承自此類(lèi),所以你可以訪問(wèn)許多方法函數(shù),這些函數(shù)允許持久化和查詢(xún)對(duì)象,而無(wú)需實(shí)現(xiàn)或引用自己定義的方法函數(shù)。例如,在實(shí)例化 CustomerRepository 對(duì)象后,你就可以直接使用 Save 函數(shù)。如果你需要擴(kuò)展更多的功能,也可以重寫(xiě)這些函數(shù)。我創(chuàng)建了一些自定義查詢(xún)來(lái)搜索我的集合,這些集合對(duì)象是我自定義的元素。

Bike 對(duì)象也有一個(gè)存儲(chǔ)源負(fù)責(zé)與數(shù)據(jù)庫(kù)交互。與 CustomerRepository 的實(shí)現(xiàn)非常類(lèi)似。其實(shí)現(xiàn)如下所示:

package com.stephb.JavaMongo.dao; import com.stephb.JavaMongo.dto.Bike;import java.util.List;import org.springframework.data.mongodb.repository.MongoRepository; /** * * @author stephon */public interface BikeRepository extends MongoRepository{        public Bike findByModelNumber(String modelNumber);        @Override        public List findAll();        public List findByColor(String color);}
運(yùn)行程序

現(xiàn)在,你已經(jīng)有了一種結(jié)構(gòu)化數(shù)據(jù)的方式,可以對(duì)數(shù)據(jù)進(jìn)行提取、轉(zhuǎn)換和持久化,然后運(yùn)行這個(gè)程序。

找到 Application.java 文件(有可能不是此名稱(chēng),具體取決于你的應(yīng)用程序名稱(chēng),但都會(huì)包含有 “application” )。在定義此類(lèi)的地方,在后面加上 implements CommandLineRunner。這將允許你實(shí)現(xiàn) run 方法來(lái)創(chuàng)建命令行應(yīng)用程序。重寫(xiě) CommandLineRunner 接口提供的 run 方法,并包含如下內(nèi)容用來(lái)測(cè)試 BikeRepository

package com.stephb.JavaMongo; import com.stephb.JavaMongo.dao.BikeRepository;import com.stephb.JavaMongo.dao.CustomerRepository;import com.stephb.JavaMongo.dto.Bike;import java.util.Scanner;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.CommandLineRunner;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;  @SpringBootApplicationpublic class JavaMongoApplication implements CommandLineRunner {                @Autowired                private BikeRepository bikeRepo;                private CustomerRepository custRepo;                    public static void main(String[] args) {                        SpringApplication.run(JavaMongoApplication.class, args);    }        @Override        public void run(String... args) throws Exception {                Scanner scan = new Scanner(System.in);                String response = "";                boolean running = true;                while(running){                        System.out.println("What would you like to create? \n C: The Customer \n B: Bike? \n X:Close");                        response = scan.nextLine();                        if ("B".equals(response.toUpperCase())) {                                String[] bikeInformation = new String[3];                                System.out.println("Enter the information for the Bike");                                System.out.println("Model Number");                                bikeInformation[0] = scan.nextLine();                                System.out.println("Color");                                bikeInformation[1] = scan.nextLine();                                System.out.println("Description");                                bikeInformation[2] = scan.nextLine();                                 Bike bike = new Bike();                                bike.setModelNumber(bikeInformation[0]);                                bike.setColor(bikeInformation[1]);                                bike.setDescription(bikeInformation[2]);                                 bike = bikeRepo.save(bike);                                System.out.println(bike.toString());                          } else if ("X".equals(response.toUpperCase())) {                                System.out.println("Bye");                                running = false;                        } else {                                System.out.println("Sorry nothing else works right now!");                        }                }                        }}

其中的 @Autowired 注解會(huì)自動(dòng)依賴(lài)注入 BikeRepositoryCustomerRepository Bean。我們將使用這些類(lèi)來(lái)從數(shù)據(jù)庫(kù)持久化和采集數(shù)據(jù)。

已經(jīng)好了。你已經(jīng)創(chuàng)建了一個(gè)命令行應(yīng)用程序。該應(yīng)用程序連接到數(shù)據(jù)庫(kù),并且能夠以最少的代碼執(zhí)行 CRUD 操作

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“如何使用Java持久化API”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!


分享題目:如何使用Java持久化API
本文鏈接:http://weahome.cn/article/pojiee.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部