java持久化框架对比,3.8-持久化层框架 - Java 开发学习笔记

名称

方法

实现

Hibernate

优势

劣势

Mybaties

Jpa

get

1. Hibernate

1.1 单独使用

1.1.1 For Idea

新建项目:【File】——>【New】——>【Project】——>【Java】——>【Hibernate、JavaEE Persistence】

添加数据连接驱动

配置数据源

根据数据库表生成实体类:【Persistence】——>【名称】——>【Generate Persistence Mapping】——>【By Database Schema】

072d45c32b0dec52b5398909a233dd3c.png

1.1.1.5 生成配置 hibernate.cfg.xml 文件

/p>

"-//Hibernate/Hibernate Configuration DTD//EN"

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

jdbc:postgresql://192.168.1.149:5432/postgres

org.postgresql.Driver

true

true

100

postgres

123456

1.1.1.6 生成测试类

1.1.2 For Eclipse

1.2 与 Spring 的整合

1.2.1 For Idea

1.2.2 For Eclipse

2. Jpa

2.1 单独使用步骤

新建 mvn 项目

新建实体类

新建 Repository 类

新建测试类

2.2 功能

2.2.1 Repository 接口

Spring Data 的核心接口,不提供任何方法。

public interface Repository

继承 Repository 接口,或添加 @RepositoryDefinition,Spring 容器才能管理用户定义的 Repository。

2.2.2 Repository 子接口

2.2.2.1 CrudRepository

方法

功能

save(entity)

保存并返回一个实体对象。

saveAll(entities)

保存并返回一个实体的 Iterable 对象

findById(id)

通过id查询一条数据

existsById(id)

通过id判断对象是否存在。

findAll()

全量查询,返回一个 Iterable 对象

findAllById(ids)

根据 ID 的 Iterable 对象返回一个实体 Iterable 对象

count()

记录总数

void deleteById(id)

根据 id 删除一条记录

delete(entity)

根据实体删除一条记录

deleteAll(entities)

根据实体的 Iterable 对象删除

void deleteAll()

删除所有。

2.2.2.2 PagingAndSortingRepository

继承了 CrudRepository,实现了分页排序功能。

|方法|功能|

|——|——|

|findAll(Sort sort)|全量查询并按指定字段排序|

|findAll(Pageable pageable)|返回 Page 对象。|

2.2.2.3 JpaRepository

继承了 PagingAndSortingRepository,实现了 JPA 规范的相关方法。

方法

功能

findAll

全量查询,返回实体的 List 对象

findAll(Sort sort)

全量查询,返回一个 List 对象,并按指定字段排序。

findAllById

根据 ID 的 Iterable 对象返回一个实体 List 对象。

saveAll(entities)

保存实体的 Iterable 对象,返回实体的 List 对象。

void deleteInBatch(entities)

根据实体的 Iterable 对象删除。

void deleteAllInBatch()

根据实体的 Iterable 对象删除。

flush

saveAndFlush

T getOne(Id id)

根据 ID 查询一条记录。

2.3 查询方法定义的规则和使用

关键词

方法名

And

findByFirstnameAndLastname

Or

findByFirstnameOrLastname

Between

findByStartDateBetween

After

findByStartDateAfter

Before

findByStartDateBefore

LessThan

findByAgeLessThan

GreatThan

findByAgeGreatThan

IsNull

findByAgeIsNull

IsNotNull(NotNull)

findByAge(Is)NotNull

Like

findByFirstnameLike

NotLike

findByFirstnameNotLike

StartingWith

findByFirstnameStartingWith

EndingWith

findByFirstnameEndingWith

Containing

findByFirstnameContaining

OrderBy

findByAgeOrderByFirstnameDesc

Not

findByFirstnameNot

In

findByAgeIn

NotIn

findByAgeNotIn

True

findByActiveTrue

False

findByActiveFalse

2.4 Query 注解

在 Repository 方法中使用,不需要遵循命名规则,只需要将 @Query 定义在 Repository 的方法上即可。

支持命名参数和索引参数。

SQL 语句中,将表名替换为类名,也可以支持原生的查询语句。

3. Mybaties

3.1 单独使用

3.1.1 添加依赖

3.1.2 添加 Spring 配置文件

```

### 3.1.3 添加 mybaties 主配置文件

### 3.1.4 添加 mapper 配置文件

### 3.1.5 添加 Dao 接口

## 3.2

### 3.2.1 添加依赖

### 3.2.2 添加 mybaties 主配置文件

### 3.1.3 添加 mapper 配置文件

### 3.1.4 添加 Dao 接口

### 3.1.5 创建 Configuration 类

create database testmybaties;

use testmybaties;

create table user(id int,username varchar(100),mobile varchar(100));

create table order(order_id int,order_no varchar(40),money float(6,2),user_id int);

insert into user(id,username,mobile) values (1,'wlj','15501686403');

insert into order (order_id,order_no,money,user_id) values(123,'255',250,'1');

“`

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值