当前位置: 首页 > 科技观察

使用JavaPersistenceAPI

时间:2023-03-13 17:06:59 科技观察

我们通过为自行车商店构建示例应用程序来学习如何使用JPA。对于应用程序开发人员来说,JavaPersistenceAPIJavaPersistenceAPI(JPA)是一项重要的java特性,需要透彻理解。它为Java开发人员定义了如何将对对象的方法调用转换为访问、持久化和管理存储在NoSQL和关系数据库中的数据的解决方案。本文通过构建自行车借贷服务的教程示例详细研究了JPA。本示例使用SpringBoot框架、MongoDB数据库(不再开源)和Maven包管理构建一个大型应用程序,并构建一个创建、读取、更新和删除(CRUD)层。这里我选择NetBeans11作为我的IDE。本教程仅从开源的角度介绍JavaPersistenceAPI的工作原理,不涉及其作为工具的使用。这一切都是关于学习编写应用程序模式,但它也有助于理解具体的软件实现。相关代码可以从我的GitHub仓库中获取。Java:不仅仅是“bean”Java是一种面向对象的编程语言,自1996年发布第一个版本的JavaDevelopmentKit(JDK)以来,它发生了很大的变化。了解它的各种发展和它的虚拟机是一个历史教训本身。简而言之,与Linux内核非常相似,该语言自发布以来已经向多个方向发展。有一个对社区免费的标准版,一个对企业免费的企业版,以及来自多个供应商的开源替代品。主要版本每六个月发布一次,它们的功能往往差异很大,因此在决定选择哪个版本之前进行一些研究。总而言之,Java有着悠久的历史。本教程重点介绍JDK11,它是Java11的开源实现。因为它是仍然有效的长期支持版本之一。SpringBoot是Pivotal开发的更大的Spring框架的一个模块。Spring是一个非常流行的Java开发框架。支持各种框架和配置,也为WEB应用和安全提供保护。SpringBoot提供了快速构建各类Java项目的基本配置。本教程使用SpringBoot快速编写控制台应用程序并针对数据库编写测试用例。Maven是Apache开发的项目/包管理工具。Maven通过POM.xml文件管理包和它们的依赖关系。如果您使用过NPM,您可能非常熟悉包管理器的功能。此外,Maven还用于构建项目和生成功能报告。Lombok是一个通过注释对象文件自动创建getters/setters的库。像C#这样的语言已经有了这个特性,Lombok只是把它带到了Java语言中。NetBeans是一种流行的开源IDE,专门用于Java开发。它的许多工具已随JavaSE和EE版本更新。我们将使用这组工具为虚构的自行车商店创建一个简单的应用程序。将对Customer和Bike对象的集合实施插入。Brew完美导航到SpringInitializr页面。本站可以生成基于SpringBoot及其依赖的基础项目。选择以下选项:项目:Maven项目语言:JavaSpringBoot:2.1.8(或最稳定的版本)项目元数据:无论您使用什么名称,命名约定都类似于com.stephb。您可以将Artifact名称保留为“Demo”。依赖项:添加:SpringDataMongoDBLombok单击下载,然后使用您的IDE(例如NetBeans)打开这个新项目。模型层概述在项目中,模型模型表示从数据库中检索信息的特定对象。我们关注两个对象:Customer和Bike。首先在src目录下创建一个dto目录;然后,创建两个名为Customer.java和Bike.java的Java类对象文件。其结构如下所示:packagecom.stephb.JavaMongo.dto;importlombok.Getter;importlombok.Setter;importorg.springframework.data.annotation.Id;/****@authorstephon*/@Getter@Setterpublicclass客户{私人@Id字符串id;私人字符串电子邮件地址;私有字符串名字;私有字符串姓氏;私有字符串地址;}Customer.Javapackagecom.stephb.JavaMongo.dto;importlombok.Getter;importlombok.Setter;importorg.springframework.data.annotation.Id;/****@authorstephon*/@Getter@SetterpublicclassBike{私有@Id字符串标识;私有字符串型号;私有字符串颜色;私有字符串描述;@OverridepublicStringtoString(){return"Thisbikemodelis"+this.modelNumber+"isthecolor"+this.color+"andis"+description;}}Bike.java如你所见,对象中使用Lombok注解来为确定正确的属性/特殊属性生创建getters/setters如果你不想为类的所有属性生成getters/setters,你可以专门在属性上定义这些注解。这两个类将成为一个容器,里面有数据,可以用在任何你想展示信息的地方。为了配置数据库,我在这个测试中使用了MongoDocker容器。如果您的系统上已经安装了MongoDB,则不必运行Docker实例。您也可以登录其官网,选择系统信息,按照安装说明安装MongoDB。安装后,您可以使用命令行、图形用户界面(如MongoDBCompass)或用于连接数据源的IDE驱动程序与新的MongoDB服务器进行交互。此时,是时候定义用于获取、转换和保存数据的数据层了。要设置数据库访问属性,导航到程序中的applications.properties文件并添加以下内容:spring.data.mongodb.host=localhostspring.data.mongodb.port=27017spring.data.mongodb.database=BikeStoredefinesdataaccessObject/DataAccessLayer数据访问层(DAL)中的数据访问对象(DAO)定义了与数据库中数据的交互过程。神奇的是,使用spring-boot-starter后,查询数据库的大部分工作都已经完成了。让我们从CustomerDAO开始。在src下新建目录dao新建接口文件,然后新建Java类文件CustomerRepository.java,内容如下:packagecom.stephb.JavaMongo.dao;importcom.stephb.JavaMongo.dto。客户;导入java.util.List;导入org.springframework.data.mongodb.repository.MongoRepository;/****@authorstephon*/publicinterfaceCustomerRepositoryextendsMongoRepository{@OverridepublicList找到所有();publicListfindByFirstName(StringfirstName);publicListfindByLastName(StringlastName);}该类是继承自MongoRepository类的接口,MongoRepository类依赖DTO(Customer.java)和字符串,用于实现自定义函数查询功能。因为您继承了此类,所以您可以访问许多方法函数,这些方法函数允许在不实现或引用您自己定义的方法函数的情况下持久化和查询对象。例如实例化CustomerRepository对象后,可以直接使用Save函数。如果需要扩展更多的功能,也可以重写这些功能。我创建了一些自定义查询来搜索我的集合,这些集合对象是我的自定义元素。Bike对象还有一个存储源,负责与数据库交互。与CustomerRepository的实现非常相似。其实现如下:*@authorstephon*/publicinterfaceBikeRepositoryextendsMongoRepository{publicBikefindByModelNumber(StringmodelNumber);@OverridepublicListfindAll();publicListfindByColor(Stringcolor);}运行程序现在您已经有了构建数据、提取数据、转换数据、保存数据并运行程序的方法。找到Application.java文件(它可能不是这个名称,具体取决于您的应用程序名称,但它将包含“应用程序”)。在定义此类的位置,在其后添加实现CommandLineRunner。这将允许您实现run方法来创建命令行应用程序。重写CommandLineRunner接口提供的运行方法,并包含如下内容使用来测试BikeRepository:packagecom.stephb.JavaMongo;importcom.stephb.JavaMongo.dao.BikeRepository;importcom.stephb.JavaMongo.dao.dao.CustomerRepository;stephb.JavaMongo.dto.Bike;导入java.util.Scanner;导入org.springframework.beans.factory.annotation.Autowired;导入org.springframework.boot.CommandLineRunner;导入org.springframework.boot.SpringApplication;导入org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublicclassJavaMongoApplicationimplementsCommandLineRunner{@AutowiredprivateBikeRepositorybikeRepo;私有客户存储库custRepo;publicstaticvoidmain(String[]args){SpringApplication.run(JavaMongoApplication.class,args);}@Overridepublicvoidrun(String...args)throwsException{Scannerscan=newScanner(System.in);字符串响应="";布尔运行=真;while(running){System.out.println("您想创建什么?\nC:客户\nB:自行车?\nX:关闭");response=scan.nextLine();if("B".equals(response.toUpperCase())){String[]bikeInformation=newString[3];System.out.println("请输入自行车信息");System.out.println("型号");bikeInformation[0]=scan.nextLine();System.out.println("颜色");bikeInformation[1]=scan.nextLine();System.out.println("描述");自行车信息[2]=扫描.nextLine();自行车bike=newBike();bike.setModelNumber(bikeInformation[0]);bike.setColor(bikeInformation[1]);bike.setDescription(bikeInformation[2]);bike=bikeRepo.save(自行车);System.out.println(bike.toString());}elseif("X".equals(response.toUpperCase())){System.out.println("Bye");运行=假;}else{System.out.println("对不起,现在没有别的工作了!");@Autowired注释将自动依赖注入BikeRepository和CustomerRepositoryBean我们将使用这些类从数据库和数据集合中持久化。准备好了。您已经创建了一个命令行应用程序。应用程序连接到数据库并能够使用最少的代码执行CRUD操作结论将对象和类等编程语言概念转换为对数据库中存储、检索或更改数据的调用对于构建应用程序至关重要。JavaPersistenceAPI(JPA)是Java开发人员解决这个问题的重要工具。您正在使用Java操作哪些数据库?请在评论中分享。