今日编写了一个小示例,实现了在Spring Boot项目中通过Spring Data JPA操作Oracle数据库。整个探索过程颇为曲折,但最终的解决方案却异常简洁。JPA(Java Persistence API)是Sun公司制定的用于Java应用程序访问数据库的对象关系映射规范,它提供了一套统一的标准接口。Spring Data JPA是在此标准基础上由Spring团队封装而成的数据访问框架,进一步简化了数据层的开发。而真正完成底层操作的,则是由具体的持久化实现厂商来完成,例如Hibernate就是其中最主流的一种实现方式。可以这样理解:JPA定义了接口规范,而实际的功能实现则交由Hibernate等具体技术去完成。这种分层设计使得开发者能够更专注于业务逻辑,而不必过多关注数据库交互的细节。
1、 项目基于SpringBoot开发,若不熟悉创建过程,请参考上方链接。需引入JPA及Oracle相关依赖的Jar包,确保环境配置完整,为后续功能实现奠定基础。
2、 配置数据源:深入理解各项参数含义。
3、 驱动:控制硬件运行的程序。
4、 数据库连接地址
5、 IP地址加端口号再加数据库名称,注意端口号与数据库名之间用/连接,部分教程写的:会导致项目启动报错,经测试不可行。
6、 用户名称
7、 密码:用于验证身份的保密信息。
8、 ddl-auto 参数需特别注意,其取值包含多种选项。其中 update 表示使数据库表结构与实体类保持同步,当实体类增减属性时,数据库会自动进行相应调整。
9、 create 表示每次启动时删除数据库中的表并根据实体类重新生成;ddl-auto 则指在关闭时删除表结构,启动时依据实体类重建表。
10、 validate表示启动时校验数据库表结构与实体类是否一致,不一致则抛出异常;none表示不做任何处理。
11、 是否显示执行的SQL语句。
12、 创建与数据库表结构对应的实体类,重写toString方法,仅输出id和visvehicle字段信息,便于简洁查看关键数据内容。
13、 创建数据库访问接口时,虽无DAO层实现类,但推测由Spring自动完成。其中Long类型用于表示主键,这一设计颇具深意,体现了框架的智能封装与简化操作的优势。
14、 只需实现JpaRepository接口,并将其注入到Controller中,便可直接调用该接口提供的内置方法进行数据库操作,无需编写额外的数据访问代码,大大简化了数据层的开发流程。
15、 我们还可以自定义查询数据库的方法,例如定义一个名为findByVehicleNo的方法,其中vehicleNo是实体类中的一个属性。只要遵循findBy后接属性名的命名规则,JPA框架便会自动解析该方法,并生成对应的SQL语句,如SELECT * FROM 表名 t WHERE t.属性名 = ?。这种机制十分智能且便捷,无需手动编写SQL代码。以findByVehicleNo为例,系统会自动识别vehicleNo字段并构建相应的条件查询,极大提升了开发效率,减少了冗余代码。
16、 编写测试控制器,通过构造函数注入数据库操作层实例。
17、 提供了三种查询方式,包括接口自带的 findAll 和 findOne 方法,以及自定义的 findByVehicleNo 方法。其中 findAll 支持分页功能,使用起来非常便捷,有效提升了数据检索的效率与用户体验。
18、 打开浏览器测试这三个方法,能成功获取数据,表明配置正确无误。
19、 查看控制台日志发现,默认的JPA实现采用的是Hibernate框架。
评论
更多评论