Spring(Boot中使用Spring data jpa的配置方法详解)
大家好,综合小编来为大家讲解下Spring,Boot中使用Spring data jpa的配置方法详解这个很多人还不知道,现在让我们一起来看看吧!
(资料图片)
为了解决抽象各种Java实体的基本“添加、删除、更改和查询”操作,我们通常会用泛型的方式封装一个模板Dao来简化抽象,但这仍然不是很方便。我们需要为每个实体编写一个从通用模板Dao继承的接口。
然后写接口的实现。尽管一些基本的数据访问可以很好地重用,但是代码结构中的每个实体都会有一堆Dao接口和实现。
由于模板Dao的实现,这些具体实体的Dao层变得很薄。一些具体实体的Dao实现可能只是模板Dao的代理,并且这样的实现类可能经常出现在许多实体中。
spring-data-jpa的出现,可以让这样一个已经很“薄”的数据访问层,变成只是一个接口编程层。例如,下面的例子:
公共接口用户知识库扩展JpaRepositoryUser,Long { User find by name(字符串名);@ Query(' from User u where u . name=:name ')User find User(@ Param(' name ')String name);}我们只需要通过编写一个继承自JpaRepository的接口就能完成数据访问,
使用示例
因为Spring-data-jpa依赖于Hibernate。如果你对Hibernate有所了解,你可以很容易地理解和使用Spring-data-jpa。如果你不熟悉冬眠,
可以从以下几个方面入手,然后建议回去学习Hibernate,帮助理解和进一步使用这部分。
工程配置
在pom.xml中添加相关依赖项,并添加以下内容:
Dependency groupIdorg.springframework.boot/groupId Artifact ID Spring-Boot-Starter-Data-JPA/Artifact ID/Dependency Configuration in application.xml: database connection information (not required if using embedded database), setting for automatically creating table structure,
春天。数据来源。URL=JDBC:MySQL://localhost:3306/test spring。数据来源。用户名=root spring。数据来源。密码=根弹簧。数据来源。driver-class-name=comMySQL。JDBC。驾驶员弹簧。JPA。属性。冬眠。hbm 2 DDL。auto=创建-丢弃弹簧。JPA。属性。冬眠。hbm 2 DDL。汽车是冬眠的配置属性,
创建:每次加载hibernate,最后生成的表都会被删除,然后根据你的模型类生成一个新的表,即使两次都没有变化。这是数据库表数据丢失的重要原因。
Create-drop:每次加载hibernate时,都会根据model类生成表,但是sessionFactory一关闭,表就会自动删除。更新:最常用的属性,
第一次加载hibernate时,会根据模型类自动建立表结构(前提是先建立数据库),以后加载hibernate时,会根据模型类自动更新表结构。
即使表结构发生变化,表中的行仍然存在,前面的行不会被删除。需要注意的是,当部署到服务器时,表结构不会立即建立,而是在应用程序第一次运行后才建立。验证:每次加载hibernate时,
验证会创建一个数据库表结构,它只会与数据库中的表进行比较。不会创建新表,但会插入新值。至此,基本配置完成。如果你在Spring下集成了它,
我相信你已经感受到了Spring Boot的便利:JPA的传统配置在persistence.xml文件中,但是我们在这里不需要它。当然,最好是按照前面提到的最佳实践工程结构来组织项目。
这确保了框架可以扫描所有的配置。
创建实体
创建一个用户实体,包括id(主键)、name(姓名)和age(年龄)属性,通过ORM框架映射到数据库表中。由于配置了hibernate.hbm2ddl.auto,
当应用程序启动时,框架会自动转到数据库创建相应的表。
@Entitypublic class user {@ id @ generatedvalue private long id; @Column(nullable=false) private string name; @Column(nullable=false) private integer age; //Omit the constructor//Omit the getter and setter} Create a data access interface
下面为用户实体创建相应的存储库接口,实现对实体的数据访问,代码如下:
public interface UserRepository extends JpaRepositoryUser, Long { User findByName(String name); User findByNameAndAge(String name, Integer age); @Query('from User u where u.name=:name') User findUser(@Param('name') String name);}在Spring-data-jpa中,
下面对上面的UserRepository做一些解释,该接口继承自JpaRepository,通过查看JpaRepository接口的API文档,
可以看到该接口本身已经实现了创建(save)、更新(save)、删除(delete)、查询(findAll、findOne)等基本操作的函数,因此对于这些基础操作的数据访问就不需要开发者再自己定义。
在我们实际开发中,JpaRepository接口定义的接口往往还不够或者性能不够优化,我们需要进一步实现更复杂一些的查询或操作。
由于本文重点在spring boot中整合spring-data-jpa,在这里先抛砖引玉简单介绍一下spring-data-jpa中让我们兴奋的功能,
后续再单独开篇讲一下spring-data-jpa中的常见使用。
在上例中,我们可以看到下面两个函数:
User findByName(String name)
User findByNameAndAge(String name, Integer age)它们分别实现了按name查询User实体和按name和age查询User实体,
可以看到我们这里没有任何类SQL语句就完成了两个条件查询方法。这就是Spring-data-jpa的一大特性:通过解析方法名创建查询。
总结
本文[高级伪原创标题]到此分享完毕,希望对大家有所帮助。
免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!
-
在安徽淮南购买高尔夫车型时,价格会受到多种因素的影响,包括车辆的配置、市场行情、经销商优惠以及个人谈判...浏览全文>>
-
关于2025款安徽池州揽境的价格,目前还没有官方发布的信息。不过,您可以关注一汽大众的官方网站或当地的经销...浏览全文>>
-
截至2024年,滁州地区大众Polo的2024款车型价格可能会因配置、经销商促销活动以及具体市场需求有所不同。以下...浏览全文>>
-
根据您提供的信息,淮北地区的T-ROC探歌的最低售价为15 89万元起。如果您有意向购买这款车,以下是一些详细的...浏览全文>>
-
根据您提供的信息,安徽亳州的途锐车型目前的最低落地价为55 88万元起。这个价格是厂商指导价或经销商报价的...浏览全文>>
-
根据市场信息,2025款长安启源A05在换代之前可能会推出一些优惠政策或促销活动,以吸引消费者抓住最后的机会购...浏览全文>>
-
根据您提供的信息,2025款安徽淮北揽境的最低售价为 26 19万元起。同时提醒您,优惠活动可能有限时性,建议...浏览全文>>
-
根据您提供的信息,安徽亳州的大众途锐目前有优惠活动,最低售价为 55 88万元起。如果您计划购买途锐,现在...浏览全文>>
-
关于2025款长安启源A05的新车报价信息,目前市场上还没有官方发布的具体价格。不过,如果您正在考虑在换代前购...浏览全文>>
-
根据您提供的信息,安徽淮北地区2025款揽境的最低售价为26 19万元起。不过,请注意这可能是促销或特定配置的...浏览全文>>
- 山东济南探岳X新款价格2024款多少钱?选车指南与落地价全解析
- 济南凌渡多少钱 2025款落地价,最低售价9.59万起,现车充足
- 滁州ID.6 CROZZ落地价,配置升级,值不值得买?
- 淮南大众ID.3多少钱 2025款落地价全分析,买车不踩坑
- 安徽蚌埠ID.6 X 2023新款价格,最低售价19.3888万起,购车攻略来了
- 安徽蚌埠ID.4 CROZZ新车报价2025款,换代前的购车良机,不容错过
- 安徽蚌埠大众CC落地价,各车型售价大公开,性价比爆棚
- 天津滨海宝来价格,各配置车型售价全知晓
- 滁州帕萨特新能源价格大起底,买车超详细
- 天津滨海途观L新能源新车报价2023款,最低售价26.105万起现在该入手吗?
- 淮北T-ROC探歌价格,最低售价15.89万起,购车攻略来了
- 淮南大众ID.3多少钱 2025款落地价全分析,买车不踩坑
- 生活家PHEV 2025新款价格大起底,买车超详细
- 生活家PHEV 2025新款价格大起底,买车超详细
- 生活家PHEV最新价格2025款,价格再创新低,性价比爆棚
- 安徽亳州途昂X多少钱?购车攻略与优惠全在这
- 天津滨海宝来价格,各配置车型售价全知晓
- 安徽安庆揽巡价格全分析,买车不踩坑
- 东莞ID.4 CROZZ新款价格2025款多少钱?选车秘籍与性价比大公开
- 28.5亿美元卖身腾讯音乐,是喜马拉雅最好的归宿
- 蚌埠途铠 2023新款价格大起底,买车超详细
- 天津滨海ID.6 CROZZ多少钱?不同配置性价比分析
- 安徽阜阳探影多少钱?经销商报价及市场优惠情况
- 安徽滁州途昂X多少钱 2025款落地价大揭秘,买车前必看
- 天津滨海探岳X多少钱 2024款落地价,买车前的全方位指南
- 天津滨海ID.6 X新款价格2023款多少钱?购车攻略助你轻松选车
- 济南途安L最新价格2022款,优惠购车,最低售价16.68万起
- 安徽滁州长安猎手K50新车报价2025款,最低售价18.29万起,现车充足
- 广汽传祺传祺向往M8试驾的流程是什么
- 江淮悍途EV预约试驾,畅享豪华驾乘,体验卓越性能