当前位置:职场发展 > SpringBoot 中使用 JPA

SpringBoot 中使用 JPA

  • 发布:2023-10-04 03:10

最近百忙中抽出时间,想写一些关于 JPA 的东西。另外,我也想加深对JPA的理解,这也是我写这篇博文的原因。

1。 JPA

JPA(Java Persistence API)Java Persistence API是Sun公司Java官方制定的一套ORM规范(Sun公司尚未实现)。

JPA 是基于 O/R 映射 的标准规范。所谓规范只是定义了标准规则(如注解、接口),并不提供实现。软件提供商可以按照标准规范来实现,而用户只需按照规范中定义的方式使用即可,而不必与软件提供商的实现打交道。 Spring Data Jpa 在 JPA 之上又增加了一层抽象(Repository 层的实现),大大简化了持久层开发和 ORM 框架切换的成本

JPA 出现有两个原因:

(1) 简化现有 Java EE 和 Java SE 应用程序的对象持久化开发; Sun希望整合ORM技术,实现持久化领域的统一。

(2)JPA的主要实现有Hibernate、EclipseLink和OpenJPA等,这也意味着只要我们使用JPA进行开发,无论使用哪种开发方式都是一样的。

JPA通过对象操作数据库(无需编写sql语句)好处不同数据库的SQL语法不同。如果不需要编写SQL语句,就可以屏蔽各个数据库SQL的差异

2. 项目实例

1、GoodsDo

导入 lombok.数据;
导入javax.持久性.*;/*** 产品类别** 对应数据库中的商品表*/ 
@实体@桌子(名称=“商品”) 
@数据
公共  GoodsDo {/*** 产品id** 该字段对应数据库中作为主键的列*主键增长* 对应goods表中的id列 */@Id@GenerateValue(strategy =  世代类型身份)@Column(名称=" id")私人 id;/***商品名称**对应商品表中的名称列*/@Column(名称= "名称")私人字符串名称;/*** 产品Price** 对应商品表中的价格栏*/ @Column (名称="价格")私人 价格/*** 产品描述** 对应商品表中图片栏 */@Column(名称 = "描述") 私人字符串描述;
}

2、商品服务

公共 接口 GoodsService {/*** 新产品*/void 添加 (GoodsDo商品);/***删除商品*/void   删除(id);/***编辑商品信息*/voidedit(GoodsDo商品) ;/*** 通过id获取商品信息(可选的是包装类,其内容为空或者包含对象,这样可以避免空指针问题)*/可选 <GoodsDo>getByIdid;/*** 获取产品信息列表*/可迭代<GoodsDo>getList(); 
}

3、IGoodsDao

通过继承CrudRepository实现CRUD操作。泛型参数分别是实体类的数据类型和主键。
注意,您现在可以通过IGoodsDao对数据库goods表进行添加、删除、修改和查询。

@存储库
公共 接口 IGoodsDao扩展 CrudRepository<GoodsDo> {
}

4、GoodsServiceImpl

@服务公共  GoodsServiceImpl 实现GoodsService{@Autowired私人IGoodsDaogoodsDao;@Override公共void 添加(商品做商品){好货Dao.保存(好货 );}@Override公共 空白删除id) ){goodsDao.deleteById(id);}@Override公共 void 编辑(GoodsDo 商品){商品Dao.保存 (商品);} @Overridepublic可选<GoodsDo>getById( ID) {返回 可选.();}@Override公共 可迭代<GoodsDo> getList() ){返回;}}

5、货物控制器

@RestController公共 GoodsController{ @Autowired私人商品服务商品服务;/*** 通过id获取商品信息*/@GetMapping("/goods/{id}")public  可选<GoodsDo> getOne(@PathVariable() “id”)id){退货货物服务.getById  (id);} /*** 获取商品列表*/@GetMapping("/商品")public  可迭代<GoodsDo>getList(){re转商品服务.获取列表();}/***新品*/@PostMapping("/商品")公共void  添加(@RequestBodyGoodsDo商品){商品服务添加(商品);}/***编辑商品*/@P utMapping( "/货物/{id} ")公共void更新(@PathVariable("id")id, @RequestBodyGoodsDo Goods) {//修改指定id的博客信息goods.setId(id);商品服务.编辑(商品); }/*** 删除产品*/@删除映射 ("/goods/{id}")public void   删除(@PathVariable“id”id{商品服务.删除 (id);}}

3。项目结构和单元测试

1。项目结构

2、JpaApplicationTests

@SpringBootTest公共 JpaApplicationTests{@Autowired私人IGoodsDaogoodsDao; / () {GoodsDo 商品=GoodsDo;商品.套装名称(“金刚丹活血化瘀”;商品.设定价格("18888");GoodsDo结果=商品Dao.保存(商品);系统..println( “新产品ID:”+结果.getId());}
}

3。源码下载

提供源码,欢迎star!
我的想法

相关文章

热门推荐