持久化

Spring持久化之MyBatis

柔情痞子 提交于 2020-01-11 02:46:53
MyBatis是一个优秀的轻量级持久化框架,本文主要介绍MyBatis与Spring集成的配置与用法。 1. Spring MyBatis配置 1.1 添加Maven依赖 在pom.xml文件里添加mybatis-spring和mybatis的依赖: <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.spring.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> mybatis-spring当前最新版本为1.2.2,mybatis当前版本是3.2.5. 1.2 添加dao接口 这里的dao必须是接口,而不是具体的实现,如MyBatisDao.java内容为: public interface MyBatisTest { public String getUserNameById(int id); public List<Students>

MySQL 持久化保障机制-redo 日志

試著忘記壹切 提交于 2020-01-11 01:08:03
我们在 聊一聊 MySQL 中的事务及其实现原理 中提到了 redo 日志,redo 日志是用来保证 MySQL 持久化功能的,需要注意的是 redo 日志是 InnoDB 引擎特有的功能。 为什么 InnoDB 引擎会引入 redo 日志作为中间层来保证 MySQL 持久化,而不是直接持久化到磁盘?我们先来看看《MySQL实战45讲》中提到的一个故事。 在《孔乙己》这篇文章,酒店掌柜有一个粉板,专门用来记录客人的赊账记录。如果赊账的人不多,那么他可以把顾客名和账目写在板上。但如果赊账的人多了,粉板总会有记不下的时候,这个时候掌柜一定还有一个专门记录赊账的账本。 如果有人要赊账或者还账的话,掌柜一般有两种做法: 一种做法是直接把账本翻出来,把这次赊的账加上去或者扣除掉; 另一种做法是先在粉板上记下这次的账,等打烊以后再把账本翻出来核算。 在生意红火柜台很忙时,掌柜一定会选择后者,因为前者操作实在是太麻烦了。首先,你得找到这个人的赊账总额那条记录。你想想,密密麻麻几十页,掌柜要找到那个名字,可能还得带上老花镜慢慢找,找到之后再拿出算盘计算,最后再将结果写回到账本上。 这整个过程想想都麻烦。相比之下,还是先在粉板上记一下方便。你想想,如果掌柜没有粉板的帮助,每次记账都得翻账本,效率是不是低得让人难以忍受? 同样,在 MySQL 里也有这个问题,磁盘就相对于账本

【DDD】持久化领域对象的方法实践

Deadly 提交于 2020-01-08 17:36:23
目录 概述 开篇 字段 Or 表 来说一下持久化为字段的情况 来说一下持久化为表的情况 怎么持久化集合值对象 将集合值对象存为字段 将集合值对象存为表 基于快照的数据存储对象 比较 总结 概述 在实践领域驱动设计(DDD)的过程中,我们会根据项目的所在领域以及需求情况捕获出一定数量的领域对象。设计得足够好的领域对象便于我们更加透彻的理解业务,方便系统后期的扩展和维护,不至于随着需求的扩展和代码量的累积,系统逐渐演变为大泥球(Big Ball of Mud)。 虽然领域驱动设计的思想很诱人,但我们依然会面临各种隐藏的困难,就比如今天我们要讲的主题“持久化”:即使前期我们设计了足够完整的领域对象,但是依然需要持久化它们到数据库中,而普通的关系型数据库可能很难维持领域对象的原有结构,所以我们必须要使用一些特有的手段来处理它。 开篇 本篇文章属于《如何运用领域驱动设计》系列的一个补充,如果您阅读过该系列的其它文章,您就会发现关于“持久化”的这个问题已经不止在一篇博文中提及到了。 那么,到底是什么原因让我们面临这个问题呢? 是的! 值对象! 如果您认真的了解过值对象的话( 如果还不了解值对象,您可以参考 如何运用领域驱动设计 - 值对象 ),您会发现值对象是由许多基元类型构成的(比如string,int,double等),所以我们可以理解它为对细粒度基元类型的包裹

iOS沙盒以及基于文件的持久化

最后都变了- 提交于 2020-01-07 04:25:21
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 新建一个demo项目 在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中调用如下代码 NSArray *documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *documentDirectory = [documentDirectories firstObject]; NSLog(@"documentDirectory = %@",documentDirectory); 输出的路径,在finder中可以前往文件夹打开 可以看到如下的目录结构 Documents 目录是保存数据,备份或者同步也是这个目录 Library/Caches app产生的数据会保存在这里,用来记住每次运行的数据,但是不会被同步 Library/Preferences NSUserDefault类操作的数据 temp/ 不会备份,但是不需要的时候还是能清处理,NSTemporaryDirectory

第 5 章 持久化类(Persistent Classes)

人走茶凉 提交于 2020-01-02 04:42:50
第 5 章 持久化类(Persistent Classes) 在应用程序中,用来实现业务问题实体的(如,在电子商务应用程序中的Customer和Order) 类就是持久化类。不能认为所有的持久化类的实例都是持久的状态——一个实例的状态也可能 是瞬时的或脱管的。 如果这些持久化类遵循一些简单的规则,Hibernate能够工作得最好,这些规则被称作, 简单传统Java对象(POJO:Plain Old Java Object)编程模型。但是这些规则没有一个是必需的。 实际上,Hibernate3对于你的持久化类几乎不做任何设想。你可以用其他的方法来表达领域模型: 比如,使用 Map 实例的树型结构。 5.1. 一个简单的POJO例子 大多数Java程序需要用一个持久化类来表示猫科动物。 package eg; import java.util.Set; import java.util.Date; public class Cat { private Long id; // identifier private Date birthdate; private Color color; private char sex; private float weight; private int litterId; private Cat mother; private Set kittens

第 5 章 持久化类(Persistent Classes)

跟風遠走 提交于 2020-01-02 04:42:36
在应用程序中,用来实现业务问题实体的(如,在电子商务应用程序中的Customer和Order) 类就是持久化类。不能认为所有的持久化类的实例都是持久的状态——一个实例的状态也可能 是瞬时的或脱管的。 如果这些持久化类遵循一些简单的规则,Hibernate能够工作得最好,这些规则被称作, 简单传统Java对象(POJO:Plain Old Java Object)编程模型。但是这些规则没有一个是必需的。 实际上,Hibernate3对于你的持久化类几乎不做任何设想。你可以用其他的方法来表达领域模型: 比如,使用Map实例的树型结构。 5.1. 一个简单的POJO例子 大多数Java程序需要用一个持久化类来表示猫科动物。 package eg; import java.util.Set; import java.util.Date; public class Cat { private Long id; // identifier private Date birthdate; private Color color; private char sex; private float weight; private int litterId; private Cat mother; private Set kittens = newHashSet(); private void

[NHibernate]ISessionFactory配置

放肆的年华 提交于 2020-01-02 04:42:21
系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 引言 持久化类是应用程序用来解决商业问题的类(比如,在电子交易程序中的Customer和Order)。持久化类,就如同它的名字暗示的,是短暂存在的,它的实例会被持久性保存于数据库中。 如果这些类符合简单的规则,NHibernate能够工作的最好,这些规则就是Plain Old CLR Object(POCO,简单传统CLR对象)编程模型。 POCO简单示例 用一个类描述一只猫: 1 public class Cat 2 { 3 private long _id; // identifier 4 private string _name; 5 private DateTime _birthdate; 6 private Cat _mate; 7 private char _sex; 8 private float _weight; 9 public long Id 10 { 11 get { return _id; } 12 set { _id = value; } 13 } 14 public string Name 15 { 16 get { return _name; } 17 set { _name = value; } 18 } 19 public DateTime

Hibernate基础学习(一)—初识Hibernate

不打扰是莪最后的温柔 提交于 2020-01-01 09:15:46
一、对象的持久化 狭义的理解: 持久化仅仅指把对象永久的保存到数据库中。 广义的理解: 持久化包括和数据库相关的各种操作。 保存: 把对象永久保存到数据库中。 更新: 更新数据库中对象的状态。 删除: 从数据库中删除一个对象。 查询: 根据特定的查询条件,把符合查询条件的一个或者多个对象加载到内存中。 二、ORM ORM(Object-Relation-Mapping),对象关系映射。 ORM的思想: 将关系数据库中的表的记录映射成对象,以对象形式展现,可以把对数据库的操作转化成对对象的操作。 三、Hibernate的配置 1.复制jar包到工程中 2.创建实体类 User.java public class User{ private Integer uid; private String username; private String password; public User(){ super(); } public User(String username,String password){ super(); this.username = username; this.password = password; } //getXxx、setXxx... } 3.创建对象关系映射文件 User.hbm.xml <?xml version="1.0" encoding=

集成Spring与iBATIS

家住魔仙堡 提交于 2020-01-01 01:10:57
对Java 开发人员而言,对象关系映射已然成为那类问题了。当然我不是开发人员,我是做 电话录音盒 相关软件的,我们需要处理功能(processing power)、较佳设计模式及更好持久化框架的组合,从而使解决持久化设计变得更加清晰。最终,我们开始取得实质性的进展。现在,我们已逼近山峰,象Spring这样的框架就象是方程式的一部分,因为他们让对象关系映射(ORM)花较少的精力来做更多的事情。在本章中,你将看到三种框架:iBATIS, JDO及Hibernate: ·iBATIS 是一种JDBC助手类框架,它给了你一些OR映射及使用OR的好处,但不带 有太多的风险。 ·JDO是一种饱受争议的持久化标准,但它有着一些独特的实现,这使得JDO在行业中也算得上是最完美的持久化框架之一。 ·Hibernate 是在JBoss组织控制下的一开源持久化框架。它可能是时下最为流行的持久化框架。大量的客户采用它,而且客户的数量还在持续稳定地增长。 与iBATIS集成 常言道:“树大招风”。在大肆宣扬的J2EE和.Net之争中, Sun的一示例应用程序被用来作为衡量应用服务器在运行时的各项性能的核心基准。 .Net非常好地打败了基于EJB的J2EE版本, 且方兴未艾。Clinton Begin 开发了iBATIS的持久化框架,他在iBATIS中使用PetStore的简化版

Redis的持久化策略

馋奶兔 提交于 2019-12-30 18:40:18
Redis的持久化策略      Redis的持久化策略主要有两种,下面主要对每种策略的特点及应用简要总结。 ○ RDB   § RDB:是redis的默认持久化机制。相当于照快照。保存的不是数据,保存的是一种状态。20G数据----> 几kb快照   § 优点:快照保存数据速度极快,还原数据速度极快;适用于灾难备份,复制其中的dump.rdb文件即可。   § 缺点:小内存机器不适合使用。RDB机制符合要求就会照快照。(随时随地启动),会占用一部分系统资源(突然的,就是在将大文件压缩过程中,会突然占用一部分内存),很可能内存不足直接宕机。(宕机后,服务器会关闭,非正常关闭)     □ 服务器正常关闭时 照快照     □ Key满足一定条件,照快照       save 900 1 #每900秒(15分钟)至少有1个key发生变化,则dump内存快照。       save 300 10 #每300秒(5分钟)至少有10个key发生变化,则dump内存快照       save 60 10000 #每60秒(1分钟)至少有10000个key发生变化,则dump内存快照   § 适用于:内存比较充裕的计算机。 ○ AOF   § 使用日志功能保存数据操作。默认AOF机制关闭的。   § 只会保存导致key变化的语句,不会记数据,只记语句,当进行恢复时,将语句重新执行一遍即可。