数据库对象

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

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

Oracle数据库的体系结构和用户管理

。_饼干妹妹 提交于 2020-01-08 07:44:38
一、Oracle体系结构 数据库的体系结构是指数据库的组成、工作过程、以及数据库中数据的组织与管理机制,要了解Oracle数据库的体系结构,必须理解Oracle系统的主要组件和重要概念。 1、Oracle体系结构概述 Oracle体系结构包含一系列组件,如下图所示,图中显示了Oracle体系结构中的主要组件,包括实例、用户进程、服务器进程、数据文件及其他文件,如参数文件、口令文件和归档日志文件等。从图中可以看出,实例和数据库是Oracle数据库体系结构的核心组成部分,也是最重要的两个概念;DBA一个很重要的工作就是维护实例和数据库本身的正常工作。 1)实例 Oracle实例是后台进程和内存结构的集合,必须启动实例才能访问数据库中的数据。Oracle实例启动时,将分配一个系统全局区(SGA)并启动一系列Oracle后台进程。Oracle实例有两种类型:单进程实例和多进程实例,单进程Oracle实例使用一个进程执行Oracle的全部操作,在单进程环境下的Oracle实例仅允许一个用户可存取;多进程Oracle实例(又称多用户Oracle)使用多个进程来执行Oracle的不同部分,对于每个连接的用户都有一个进程。 2)数据库 数据库是数据的集合,物理上指存储数据库信息的一组操作系统文件,每个数据库有一个逻辑结构和物理结构。物理结构是指构成数据库的一组操作系统文件,主要由三种类型文件组成

pymysql

微笑、不失礼 提交于 2020-01-07 22:41:27
*/ /*--> */ 目录 About pymysql Install 准备 建立连接 创建数据库 快速上手之增删改查 增 删 改 查 SQL注入 事物 存储过程 返回Python目录 返回测试目录 返回随笔首页 About pymysql 返回顶部 在Python2.x中,Python连接MySQL服务器使用mysqldb库,但是它只支持到Python2.x,在Python3.x中由pymysql模块代替。 PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。 Install 返回顶部 pip install pymysql # 备用地址 pip install -i https://pypi.doubanio.com/simple pymysql 准备 返回顶部 在正式操作前,这里默认你有了一个良好的环境,包括MySQL服务,Python环境。 建立连接 返回顶部 import pymysql conn = pymysql.connect( host='localhost', # 连接的服务器ip user='username', # 用户名 password='password', # 密码 database='day31', # 你想连接的数据库 charset='utf8' # 指定字符编码

mysql 优化数据库对象

谁说我不能喝 提交于 2020-01-07 15:07:41
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1.优化表的数据类型: 表需要使用何种数据类型是需要根据应用来判断的。虽然应用设计的时候需要考虑字段的长度留有一定的冗余, 但是不推荐让很多字段都存有大量的冗余,这样既浪费磁盘存储空间,同时在应用程序操作时也浪费物理内存。 在mysql中,可以使用函数PROCEDURE ANALYSE()对当前应用的表进行分析, 该函数可以对数据表中列的数据类型提出优化建议, 用户可以根据应用的实际情况考虑是否实施优化。 如: select * from warning_repaired PROCEDURE ANALYSE()\G; 范例: 建表: ----------------------------------------------------------------------------------------------------------------------------------------+ | warning_repaired | CREATE TABLE `warning_repaired` ( `id` int(11) NOT NULL AUTO_INCREMENT, `device_moid` varchar(36) NOT NULL, `device_name` varchar(128)

easypoi导入Excel最佳实践

你离开我真会死。 提交于 2020-01-07 09:40:45
前言 本文原文链接地址:http://nullpointer.pw/easypoi%E5%AF%BC%E5%85%A5Excel%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.html 一直以来,使用EasyPOI做了不少导入导出的需求,但是每次做完都是临时去看官方文档现学现用,正巧最近朋友遇到这么个需求,用到了EasyPOI来完成导入,我也正好整理整理EasyPOI的导入用法。 本文原文链接地址:http://nullpointer.pw/easypoi%E5%AF%BC%E5%85%A5Excel%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.html 需求是这样的:现在要在后台导入用户的简历,简历的格式是这样子的: 一个人有多个属性,某些属性如申请职位、薪资是单一属性,即只会有一个值;某些属性如工作经历、教育经历、获奖情况是一组属性,可能会有多组值。现在要将这批简历数据导入到库中。 零、文件准备: 示例Excel以及示例Excel2 加入 EasyPOI 的依赖 <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-web</artifactId> <version>3.2.0</version> </dependency> 一

Enterprise Library2.0(1):Data Access Application Block学习

大憨熊 提交于 2020-01-07 00:44:18
本文转载自: http://www.cnblogs.com/terrylee/archive/2006/03/14/350026.html 作者:Terrylee 转载请注明该声明。 Data Access App lication Block 提供了通用的数据访问的功能,随着 2.0 版本的推出有了很大变化。 一.改进 在 DAAB1.1 里面我们知道 Database 方法返回或者创建一个 DBCommandWrapper 对象,而在 DAAB2.0 里面移除了 DBCommandWrapper 类,用 ADO.NET2.0 里面的 DBCommand 类代替实现类似的功能,这样使得 DAAB 跟我们的 .NET 类库的结合更加紧密,回忆一下我们在 1.1 里面用 DBCommandWrapper 来访问数据时的代码: Database db = DatabaseFactory.CreateDatabase(); DBCommandWrapper dbCommand = db.GetStoredProcCommandWrapper( " GetProductsByCategory " ); dbCommand.AddInParameter( " CategoryID " , DbType.Int32, Category); DataSet productDataSet = db

Oracle 数据泵expdq,impdq

匆匆过客 提交于 2020-01-06 16:57:55
使用数据泵技术实现逻辑备份 数据泵概述 数据泵(DATA PUMP)是一种在数据库之间、数据库与操作系统之间,高速传输数据的技术(10g推出)。 逻辑备份概述 逻辑备份是对数据库对象(如用户、表、存储过程等)利用EXPORT等工具进行导出 物理备份对比 物理备份是转储ORACLE物理文件(如数据文件、控制文件、归档日志文件等) 物理备份旨在完全恢复整个数据库,要求完全相同的备份环境和恢复环境 逻辑备份旨在备份数据本身,可移植性强,但是备份和恢复速度低下,大型业务系统一般不用 操作步骤 1.创建目录对象(在哪导入,导出到哪) CREATE DIRECTORY 目录名(dump_dir) as '绝对路径'; 2.dump_dir目录授予 GRANT read,write on directory 目录名 to 导入导出用户; SELECT * FROM DBA_DIRECTORIES; 查询所有已创建的目录 DROP directory 目录名; 删除目录 3.expdq导出(EXPDP和IMPDP是Oracle服务端的工具,退出sqlplus) 第一种:全量导出数据库: expdp 用户名/密码@orcl dumpfile=导出文件名.dmp directory=目录名 full=y logfile=日志名.log;(与dmp一个目录) 第二种:按用户导出: expdp 用户名

3.1.1 HTML5存储

主宰稳场 提交于 2020-01-06 14:41:57
一.介绍 二.HTML5本地存储 (一).Localstorage (二).API (三).存储时效 (四).indexDB (五).indexDB-索引 (六).indexDB-游标 三.游标索引结合与区别 (一).IndexDB-游标索引结合 (二).indexDB-区别 四.课程总结 (一)介绍 1. 本地存储 : (1) .web storage (2) .IndexedDB 2. 本地存储的扩展介绍。 3. 离线存储-app cache。 4. 分析存储需求 : ( 1 ). 照顾2g,3g网络的体验。 ( 2 ). 流量节省。 ( 3 ). 在离线情况下使用。 cookie做不到,cookie的局限性:存储大小限制,仅4kb。单个域名下的数量限制,50个左右。污染请求头,浪费流量。 二.HTML5本地存储 (一)Localstorage localStorage和sessionStorage 1. 本地存储和离线存储相同的使用方法: ( 1 ). setItem方法设置存储内容。localStorage.setItem('Key', 'Value'); ( 2 ). getItem方法获取存储内容。localStorage.getItem('Key');//返回value值。 ( 3 ). 使用removeItem方法删除存储内容。(一个一个删)

数据库介绍与分类

匆匆过客 提交于 2020-01-06 00:30:57
第1章 数据库介绍与分类 1.1 数据库介绍 什么是数据库 简单的说,数据库就是一个存放计算机数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来对数据进行组织和存储的,我们可以通过数据库提供的多种方法来管理其中的数据。 1.2 数据库的种类 按照早期的数据库理论,比较流行的数据库模型有三种,分别为层次式数据库、网状数据库和关系型数据库。而在当今的互联网企业中,最常用的数据库模式主要有两种,即关系型数据库和非关系型数据库。 1.2.1 关系型数据库介绍 (1)关系型数据库由来 虽然网状数据库和层次数据库已经很好地解决了数据的集中和共享问题,但是在数据独立和抽象级别上仍有很大欠缺。用户在对这两种数据库进行存取时,仍然需要明确数据的存储结构,指出存取路径。而关系数据库就可以比较好地解决这些问题。 (2)关系型数据库介绍 关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过这些关联的表格分类、合并、连接或选取等运算来实现数据的管理。 关系型数据库诞生距今已有40多年了,从理论产生到发展到实现产品,例如:常见的MySQL和Oracle数据库,oracle在数据库领域里上升到了霸主地位,形成每年高达数百亿美元的庞大产业市场,而MySQL也是不容忽视的数据库

C#工具类SqlServerHelper,基于System.Data.SqlClient封装

℡╲_俬逩灬. 提交于 2020-01-03 21:18:08
源码: 1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7 using System.Data.SqlClient; 8 9 namespace Fly.Util.DataBase 10 { 11 /// <summary> 12 /// SqlServer数据库操作类 13 /// </summary> 14 public static class SqlServerHelper 15 { 16 /// <summary> 17 /// 执行数据库非查询操作,返回受影响的行数 18 /// </summary> 19 /// <param name="connectionString">数据库连接字符串</param> 20 /// <param name="cmdType">命令的类型</param> 21 /// <param name="cmdText">SqlServer存储过程名称或PL/SQL命令</param> 22 /// <param name="cmdParms">命令参数集合</param> 23 ///