php怎么和数据库通信,php – 如何处理域和数据库层之间的通信?

加布里埃尔,这被称为“

impedance matching problem”.有许多解决方案,从重量级的实体bean,如J2EE实体bean到Ruby ActiveRecord,再到简单的手工连接编码.

更新

好吧,很难在没有更多信息的情况下很难确切地知道如何攻击它,但这是基本的方法.

任何这些架构问题都是由性能等非功能性需求驱动的;此外,这里存在正确性问题,因为您希望确保以正确的顺序完成更新.因此,您需要考虑工作负载,即实际应用程序中的使用模式.考虑到这一点,您基本上会遇到一些问题:首先,应用程序中的基本数据类型可能无法正确映射到数据库(例如,代码中表示的VARCHAR属性是什么?),其次是域模型可能无法完全映射到您的数据库模型.

你想要的是让数据库和dmain模型解决,以便域对象的一个​​实例恰好是数据库模型中表的一行;在大型应用程序中,由于性能限制或预先存在的数据库模型所施加的约束,您很少这样做.

现在,如果您完全控制数据库模型,它会稍微简化一些事情,因为这样您就可以使数据库模型更接近域.这可能意味着数据库模型有些非规范化,但如果是这样,您可以(根据您的数据库)处理带有视图的数据,或者只是没有完全规范化的数据库.规范化是一种有用的理论构造,但这并不意味着你不能在真实系统中放松它.

如果您不完全控制数据库模型,则需要一层对象进行映射.在实现它时,你有很多选择可供选择:你可以在数据库中构建视图或非规范化表,你可以构建中间对象,或者你可以做两者中的一些,甚至可以有两个步骤(即,访问denormalizaed表的中间对象.)

但是,在这一点上,你遇到了“不要重复自己”和“做最简单的事情可能有效”的问题.想想最有可能改变的是什么?你的域名模型?如果你有一个强大的领域模型,那就不太可能了 – 业务变化相对较少.数据库中数据的确切表示?更常见的一点.或者,最常见的是确切的使用模式(比如发现需要处理并发更新).因此,当您考虑到这一点时,您需要做些什么才能使尽可能简单的方法来处理最常见的更改.

我意识到这并没有给你非常精确的指示,但我认为我们不能在不了解你的应用程序的情况下提供精确的指示.但是,当你已经在处理或多或少的工作时,我也会有一种印象,你想知道处理这个问题的“正确”方式是什么.所以,我最后会问“你现在对什么不满意?”和“你想怎么解决这个问题?”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pcb过孔漏铜_【企业资讯】大正瑞地:专注PCB药水二十年,品质、性能可靠

企业简介公司拥有领先的技术及产品、顾问型服务、PCB药水全系列体系化运行。沉铜、电镀、中/超粗化、减铜药水、化镍金、OSP、显影、退膜及辅助物料等全系列PCB药水,自主研发,拥有核心技术,自成体系,可以全面、系统的供应产品及全…

asterisk extconfig.conf文件解析

1. int read_config_maps(void), 定义在main/config.c,被main函数调用,下面开始分析read_config_maps struct ast_config *config, *configtmp; 新建一个配置结构体 configtmp ast_config_new(); 从extconfig_conf即extconfig.conf得到配置信息并存储在config 中…

php微信模板信息发送的代码例子,微信模板消息发送样例

微信模板消息发送样例://先构建一个http发送function http_request($url, $data array()){$ch curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_S…

前端切换视图_前端架构 101(五):从 Flux 进化到 Model-View-Presenter

李熠:前端架构 101(一):在谈论它们之前我们需要达成的共识​zhuanlan.zhihu.com李熠:前端架构 101(二): MVC 初探​zhuanlan.zhihu.com李熠:前端架构 101(三&…

[转+整理]十道海量数据处理面试题与十个方法大总结

海量数据处理:十道面试题与十个海量数据处理方法总结 作者:July、youwang、yanxionglu。 时间:二零一一年三月二十六日 本文之总结:教你如何迅速秒杀掉:99%的海量数据处理面试题。有任何问题,欢迎随时交流、…

java fx 建立窗体,3花式窗体与JavaFX CSS

2019独角兽企业重金招聘Python工程师标准>>>3花式窗体与JavaFX CSS本教程是通过添加级联样式表(CSS)来使您的JavaFX应用程序看起来很有吸引力。您开发设计,创建.css文件并应用新样式。在本教程中,您将使用一个使用默认样式进行标签,…

asterisk几个通用函数说明

1. #define ast_config_load(filename, flags) ast_config_load2(filename, AST_MODULE, flags) 加载配置文件filename,并返回一个ast_config结构体指针。 ast_config_load2是调用了 struct ast_config *ast_config_internal_load(const char *filename, struc…

python如何进行格式化输出变量_Python变量格式化输出实现原理解析

print() 函数使用以 % 开头的转换说明符对各种类型的数据进行格式化输出。转换说明符(Conversion Specifier)只是一个占位符(也称为格式化操作符),它会被后面表达式(变量、常量、数字、字符串、加减乘除等各种形式)的值代替。转换说明符解释%d、%i转换为带符号的十进…

java json 返回null,[] Spring4 MVC 返回json格式时候 设置不返回null值属性的有关问题...

[求助] Spring4 MVC 返回json格式时候 设置不返回null值属性的问题本帖最后由 bighong0404 于 2015-10-06 12:45:38 编辑背景:使用responseBody设置以json格式返回数据时候. 有时候被返回的对象有些属性是null值, 默认还是会输出. 例如下面代码. 在与移动端交互时候会很浪费流量…

log4j无厘头异常

今天系统升级&#xff0c;是web程序&#xff0c;备份程序之后&#xff0c;替换class下面的com的全部类文件后shutdown tomcat&#xff0c;然后启动程序&#xff0c;startup之后出现 java.lang.NullPointerException at org.apache.log4j.spi.LocationInfo.<init>(Loca…

res_config_mysql和chan_sip模块的加载分析

1. res_config_mysql的模块加载早于chan_sip&#xff0c;他们的加载函数均为load_module 先分析res_config_mysql的load_module函数 parse_config(0); parse_config解析res_config_mysql文件&#xff0c;并用文件中的配置信息填充mysql_conn结构体 我当前的res_config_mysql文件…

如何连接安卓手机_安卓手机如何使用AirPods

苹果公司推出的无线蓝牙耳机AirPods可以说是市面上最好的无线耳机&#xff0c;配合iPhone使用能够给你带来畅快舒适的体验。有很多小米华为oppo&#xff0c;vivo等安卓手机用户也在问了&#xff0c;安卓手机能够支持AirPods呢&#xff0c;答案是肯定的。图片来源&#xff1a;网…

晒一下我的代码生成器

经过最近一段新的尝试【BS架构】,之前的编程一直是CS架构&#xff0c;但也总是在忙那些项目&#xff0c;没法整理出一套符合自己团队的一套编程体系和架构&#xff1b; 新的起点&#xff0c;又是一个新的挑战&#xff0c;现在已经是03年&#xff0c;最早做的时候是07年&a…

discuz viewthread.php,修改discuz论坛的标题header和footer

1、关于去掉DZ论坛标题处的Powered by Discuz!&#xff0c;去掉他的原因是为了使标题更加简洁明了&#xff0c;还有就是不被搜索到导致SPAM&#xff1a;具体的修改方法&#xff1a;打开/templates/default/header.htm&#xff0c;在第五行中直接删除&#xff1a;- Powered by D…

sed命令详解

转载&#xff1a;http://blog.chinaunix.net/u/22677/showart_1076318.html1.简介sed是非交互式的编辑器。它不会修改文件&#xff0c;除非使用shell重定向来保存结果。默认情况下&#xff0c;所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件&#xff08;或输入&#xff…

Oracle中的单值函数

Oracle的函数 Oracle函数可以分为单值函数和分组函数两大类&#xff0c;单值函数又分为字符函数、日期和时间函数、数字函数、转换函数和混合函数&#xff1a;分组函数右count、max、min、avg、sum&#xff0c;都可以和group by 搭配使用。 单值函数 1、 字符函数 l 字符串连…

asterisk账号和拨号方案mysql存储(静态)

asterisk账号和拨号方案的静态存储相对动态的话&#xff0c;比较简单&#xff0c;而且也比较好理解&#xff0c;说白了就是把 sip.conf和extensions.conf文件的内容完完整整的放入到数据库中&#xff0c;不像动态存储那样&#xff0c;不但需要数据库而且还需要 sip.conf和ext…

matlab自动排版,工具方法| Matlab 简单绘图与排版

matlab启动界面 来自百度百科对于很多教师与学生&#xff0c;Matlab是做数值计算很好的一款软件。收集、整理、分析数据十分的方便&#xff0c;我们也可以通过Matlab画出相对比较好看的图。这里简单总结下Matlab的画图方式与排版&#xff0c;供初学者参考、交流。Matlab基本都是…

坦克大战代码_坦克大战系列文章-坦克大战简介

前言本篇主要对坦克大战Robocode做一个简单的介绍&#xff0c;对java最初的人工智能算法演练工具做一个了解坦克大战简介今天我们要谈的是java 最初的基于人工智能算法的仿真模拟坦克大战&#xff0c;全称Robocode。Robocode 是一位IBM的工程师 Mat Nelson 用Java 语言所创造的…

php mongo sort -1出错,mongoDB排序引起的ERROR

mongo 使用过程中遇到了一个问题&#xff0c;需求就是要对mongo 库中数据进行排序查询logger.info("历史采集汇总");// 一天数据calendar Calendar.getInstance();calendar.add(Calendar.HOUR_OF_DAY, -24);cond new BasicDBObject();cond.put("workTime"…