Java 持久化 的分类

搜了下,看到这个链接Java 持久化操作


Java 持久化操作
持久化就是将内存中的数据保存起来,使之可以长期存在。
在Java中 可以做到持久化有很多种方法。
其中有:
  1. 堵塞型IO,也就是我们经常说的io流;
  2. 非堵塞型IO,通常称为New IO。也就是我们经常说的nio
  3. Xml
  4. 序列化
  5. 数据库持久化

把java中的持久化分成了5类。。。看到别的链接,大概是三类。

其实IO和NIO 输入输出不能算是持久化,他们只是两种底层技术。

其他三种来简要分析下,

xml(其他还有yml 甚至还有csv等等等)本质上代表了存储在本地的文件的数据的解析方式,即使是txt只要按约定的格式,一样解析,强力工具JAXB,xml直接转javabean。

序列化在java coreI和 java编程思想里已经有很多详细的解释,不再赘述,典型的可以用javabean式思维。

数据库持久化---网上的文章一般简要地概括为写入数据库(本来存进数据库就是最正统的持久化操作)

那么问题来了 sessions cookies 这样的应该归于哪一类

 

### 持久化技术的分类 持久化技术主要分为以下几类,每种技术适用于不同的使用场景和需求: #### 1. 文件存储 文件存储是一种基础的持久化方式,适用于简单的数据结构和不需要复杂查询的场景。例如,在Android中,可以使用内部存储或外部存储将数据写入文件,通过序列化对象或者直接操作文本文件进行保存[^1]。 #### 2. 键值对存储 在Android开发中,SharedPreferences 提供了一种轻量级的键值对存储方式,适合保存应用的配置信息或少量用户数据。这种存储方式基于XML格式,并且由系统自动管理读写过程。 #### 3. 数据库存储 数据库存储是持久化技术中最常用的方式之一,它支持复杂的查询和事务处理。常见的数据库包括关系型数据库(如MySQL、Oracle、SQL Server)和非关系型数据库(如MongoDB、Redis)。对于需要频繁更新和查询的数据,数据库存储提供了高效可靠的解决方案[^5]。 ##### 关系型数据库 - **SQLite**:SQLite 是 Android 系统内置的轻量级嵌入式数据库,非常适合移动端开发。它支持标准的 SQL 查询语法,并且不需要额外的服务器进程即可运行。 - **MySQL / PostgreSQL**:MySQL 和 PostgreSQL 是两个流行的开源关系型数据库管理系统。它们都支持 ACID 事务、复杂的查询以及大规模并发访问,适用于企业级应用的数据持久化需求。 ##### 非关系型数据库 - **MongoDB**:MongoDB 是 NoSQL 领域中非常受欢迎的文档型数据库,支持灵活的模式定义和水平扩展。对于非结构化或半结构化的数据,MongoDB 提供了强大的持久化能力。 - **Redis**:Redis 是一个高性能的内存数据库,广泛应用于缓存、消息队列等领域。它支持多种持久化策略,包括 RDB 快照和 AOF 日志,确保数据的安全性和可靠性。 #### 4. 内存快照 Redis 是一种内存中的键值对数据库,为了防止数据丢失,它支持 RDB 持久化方式。RDB 通过定期生成内存数据的快照并将其保存到磁盘上来实现持久化。这种方式适合用于备份和灾难恢复,因为它能够快速生成一个完整的数据副本[^2]。 #### 5. 追加日志(AOF) 除了 RDB 快照之外,Redis 还支持 AOF 持久化方式。AOF 记录了所有对数据库进行修改的操作命令,并在 Redis 启动时重新执行这些命令来恢复数据。相比 RDB,AOF 提供了更高的数据安全性,但也可能带来一定的性能开销[^3]。 #### 6. 对象关系映射(ORM) Hibernate 是 Java 平台上的一个 ORM(对象关系映射)框架,它简化了与数据库交互的过程。Hibernate 支持数据的保存、更新、删除、加载和查询等操作,使开发者能够以面向对象的方式处理数据库中的数据[^4]。 ##### ORM 框架 - **Hibernate / JPA**:Hibernate 实现了 JPA(Java Persistence API)规范,不仅简化了数据库操作,还提供了丰富的特性,如延迟加载、缓存管理和事务控制等[^4]。 - **Room Persistence Library**:Room 是 Google 推荐的 Android 持久化库,它封装了 SQLite 的底层操作,并提供了编译时检查的 SQL 查询功能。此外,Room 还集成了 LiveData 和 RxJava 等响应式编程组件,使得数据访问更加高效和灵活。 - **Realm**:Realm 是一款跨平台的移动数据库,专为高性能而设计。它的 API 更加直观易用,并且支持实时同步功能,适用于构建复杂的移动应用。 #### 7. 序列化技术 数据持久化是指将数据从内存保存到可持久化存储介质(如磁盘、数据库等)的过程,在应用程序运行过程中数据需要被频繁地读取和写入持久化存储介质,以确保数据的可用性和可靠性,序列化技术在此过程中发挥着至关重要的作用[^2]。 ### 示例代码:使用 Python 写入文件 ```python # 将字符串写入文件 with open('example.txt', 'w') as file: file.write("Hello, this is a sample text for persistence.") # 从文件读取内容 with open('example.txt', 'r') as file: content = file.read() print(content) ``` ### 示例代码:使用 Redis 进行 RDB 持久化配置 ```bash # Redis 配置文件 redis.conf 中的相关设置 save 900 1 # 在900秒内至少有1个键被修改时触发快照 save 300 10 # 在300秒内至少有10个键被修改时触发快照 save 60 10000 # 在60秒内至少有10000个键被修改时触发快照 stop-writes-on-bgsave-error yes # 如果BGSAVE失败,则停止写入操作 rdbcompression yes # 启用RDB压缩 rdbchecksum yes # 开启校验和验证 dir ./ # 指定RDB文件的保存目录 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值