4.2的ORM有个问题,不知道小博美是不是不知道饱BUG

请资深人员回答俺的两个问题,不知道算不算系统自身的Bug?Tomcat连接池与HibernateSynchronizer 不兼容问题
想到会不会tomcat有问题于是测试了一下。
1、tomcat主页访问不了
2、访问一个项目根目录访问不了
3、访问上一个项目下的一个页面可以访问
4、把上个页面复制到现在在做的项目下,这个页面没有错误,然后访问不了
然后我就糊涂了,其实也是新手,不知道这样到底是tomcat出问题
22:28&&&[]
访问?&&&&&
新手学习,不知道如何下手,请赐教:理顺一下思路!,谢谢!
回复讨论(解决方案)
1.&都是读,就不需要同步了,都直接读好了
2.&谁new的,谁负责delete比较好,
3.&主线程跟子
-11:20&&&[]
我开启就不用服务器就登录一下。然后就不动了。但是过一点时间查少了3个连接..
是啊,不是有个配置连接超时时间么。闲置的时间一到,连接就被连接池回收了~
-15:28&&&[]
mysql在不知道两个表的主键名的情况下怎么比较两个表的主键是否相等,我按下面做的,但是返回一直为空exp和act是两个表名
SELECT&@exp_key&:=&COLUMN_NAME&FROM&nbsp
14:43&&&[]
问题是通过“查找替换”窗口找打的文本是其实是突出显示的,只不过必选手动激活当前主窗体才可以看到的啊。怎么能让它自动是突出显示的
见LZ另一贴.问题解决了请尽快结贴^
-11:06&&&[]
假如我数据库允许的最大连接数是100,而我程序代码里创建连接池的时候连接池数量是10.当用户请求的时候,已经用了10个连接之后,第11个连接上来的时候会出现什么情况,是排队等待?等连接池里这10个空闲一个的时候在继续,还是跳过连接池,直接从数据库那边操作(可能说的不准确,因为我也不知道怎么形容
23:06&&&[]
我要调试一个网上调查系统,用MYsql数据库和JSP,TOMCAT,spring+hibernate开发的。当在注册页面提交时,出现数据源错误,如下:
HTTP&Status&500&-&nbsp
22:31&&&[]
大家好,最近被proxool连结池搞崩溃了,目前手头上做的是一个分布式系统,数据库服务器只有一台,然后下面的就是多个应用服务器,共享这一台数据库服务器,目前是部署4至5个应用服务器,它们都是分布式的,连接的都是一个数据库,彼此都不再同一台机器上,每个应用服务上都有一个连接池来与数据服务器通信
-20:02&&&[]
郁闷了一天,还是没有解决这个问题,请各位大虾帮忙!
我的一个名为&DbControl&的&JAVA类文件的使用连接池源码如下:
public&void&getDbConnection()&throws&nbsp
-14:58&&&[]
什么原因导致的这种情况?
回复讨论(解决方案)
我估计你一旦超过30个用户一次,你这个问题就出现了
我觉得应该是,你的显示在线用户的地方有点问题。
我这个是连接池,楼上的说的我不大明白,能说明白点吗,说oracle连接数不够?
你的并发数不够,可以设置并发数多一点。
-15:01&&&[]
兼容性问题
你把css里面&img&的属性重置&或者改变部分数值&再看
&style&type=&text/css&& div#wrap&{ &&display:table
15:52&&&[]
连接池配在tomcat中,每次执行完dao操作后,需要关闭Connection吗?如果不在每次dao操作后关闭Connection,它本次操作的Connection会被连接池回收吗?何时应该关闭Connection
回复讨论(解决方案)
连接池不会关闭,它的机制就是要维持一定数量的缓冲
09:55&&&[]Maven Repository: org.springframework >> spring-orm >>
>> spring-orm
Spring Object/Relational Mapping
LicenseApache 2.0CategoriesTagsUsed ByVersionRepositoryUsagesDate5.0.x(Feb, 2017)(Jan, 2017)(Nov, 2016)(Sep, 2016)(Jul, 2016)4.3.x(Jun, 2017)(Apr, 2017)(Mar, 2017)(Jan, 2017)(Dec, 2016)(Nov, 2016)(Sep, 2016)(Jul, 2016)(Jul, 2016)(Jun, 2016)(May, 2016)(Apr, 2016)4.2.x(Dec, 2016)(Sep, 2016)(Jul, 2016)(May, 2016)(Feb, 2016)(Dec, 2015)(Nov, 2015)(Oct, 2015)(Sep, 2015)(Jul, 2015)(Jul, 2015)(Jun, 2015)(May, 2015)4.1.x(Dec, 2015)(Oct, 2015)(Jun, 2015)(May, 2015)(Feb, 2015)(Dec, 2014) 0
(May, 2015)(Dec, 2014) 0
(Apr, 2015)(Nov, 2014)(Oct, 2014) 0
(Jun, 2016)(Sep, 2014)(Aug, 2014)(Jul, 2014)4.0.x(Dec, 2014)(Nov, 2014)(Sep, 2014)(Jul, 2014) 0
(May, 2015)(May, 2014) 0
(Jun, 2015)(Apr, 2014) 0
(Apr, 2015)(Mar, 2014)(Feb, 2014) 0
(Jun, 2016)(Jan, 2014)(Dec, 2013)(Dec, 2013)(Oct, 2013)(Aug, 2013)(Jul, 2013)(May, 2013)3.2.x(Dec, 2016)(May, 2016)(Dec, 2015)(Oct, 2015)(Jun, 2015)(Dec, 2014)(Nov, 2014)(Sep, 2014)(Jul, 2014)(May, 2014)(Feb, 2014)(Jan, 2014)(Dec, 2013)(Nov, 2013) 0
(Oct, 2015)(Aug, 2013)(May, 2013)(Mar, 2013)(Jan, 2013)(Dec, 2012)(Nov, 2012)(Nov, 2012)(Sep, 2012)(May, 2012)3.1.x(Apr, 2015)(Jan, 2013) 0
(Apr, 2015)(Oct, 2012)(Jul, 2012)(May, 2016)(May, 2016)(Feb, 2012)(Dec, 2011)(Nov, 2011) 0
(May, 2015)(Oct, 2011) 0
(Apr, 2015)(Jun, 2011) 0
(Apr, 2015)(Feb, 2011)3.0.x(Dec, 2011)(Aug, 2011)(Oct, 2010)(Aug, 2010)(Jun, 2010)(Apr, 2010)(Feb, 2010)(Dec, 2009)(Dec, 2009)(Nov, 2009)(Sep, 2009)(Aug, 2009)(May, 2009)2.5.x(Jul, 2014)(Sep, 2011)(Jun, 2010)(Apr, 2009)(Nov, 2008)(Jun, 2008)(Apr, 2008)(Apr, 2008)(Mar, 2008)(Jan, 2008)(Dec, 2007)1.2.x(Mar, 2007)(Aug, 2006)(May, 2006)(Dec, 2005)(Dec, 2005)(Dec, 2005)(Dec, 2005)(Dec, 2005)(Dec, 2005) 0
(Dec, 2005) 0
(Dec, 2005) 0
(Dec, 2005)1.1.x 0
(Dec, 2005) 0
(Dec, 2005) 0
(Dec, 2005) 0
(Dec, 2005) 0
(Dec, 2005) 0
(Dec, 2005) 0
(Dec, 2005) 0
(Dec, 2005)1.0.x 0
(Dec, 2005) 0
(Dec, 2005) 0
(Dec, 2005)Related Books (2017)by Daniel Rubio, Josh Long, Gary Mak, Marten Deinum (2016)by Van Nguyen (2016)by J Sharma, Ashish Sarin (2014)by Felipe Gutierrez (2014)by J Sharma, Ashish Sarin (2013)by Srinivas Mudunuri (2012)by J Sharma, Ashish Sarin (2011)by Madhusudhan Konda (2008)by Dhrubojyoti Kayal (2007)by Thomas Van de Velde, Bruce Snyder, Christian Dupuis, Sing Li, Anne Horton, Naveen Balani (2005)by Rod Johnson, J?rgen H?ller, Alef Arendsen, Thomas Risberg, Colin Sampaleanu
Web site developed by
Powered by:Sequelize 4.2.1发布,Node.js的ORM-红联Linux系统门户
您的位置:
&& 查看内容 - - -
Sequelize 4.2.1发布,Node.js的ORM
baihuo发布于
&&字号: &&&&(网友评论&0&条)&
Sequelize 4.2.1 已发布,Sequelize.js 提供对 MySQL,MariaDB,SQLite 和PostgreSQL 数据库的简单访问,通过映射数据库条目到对象,或者对象到数据库条目。简而言之,就是 ORM(Object-Relational-Mapper)。Sequelize.js 完全是使用 JavaScript 编写,适用于 Node.js 的环境。
本次更新主要是修复了一个 bug,如下:
indexes: 修复复合指数问题
软件详情:
下载地址:
来自:开源中国社区
发表评论,与各位同人交流。回复请点击下方的我要评论按钮(游客可回复),要发表贴子请点击
Linux教程下载?“”(请点击),Linux教程免费下载。
求助Linux问题?论坛有39版块,覆盖所有Linux技术层面。前往“”
 |  |  |  |  |  |  |  |  |  |  |  | 
&2017 红联 Powered by SupSiteUjorm 1.0 发布,ORM框架
该版本完成了用户指南文档,新增一个更有效的方法 OrmTools.loadLazyValuesAsBatch() 用来加载大量的lazy属性;支持
框架用来管理 ORM 会话和事务处理;标准查询内置对 IN 操作的支持;修复了一些bug。
Ujorm是一个开源的对象-关系映射实现框架(ORM )。拥有一个类型安全的查询语言,可以让java编译器检查语法错误。支持懒加载,拥有比更 高的性能。ORM模型既可以通过Java源 代码配置,也通过注释或XML文件配置。ORM可映射数据库中的表格,视图或自定义的SQL查询。JDBC查询参数通过问号传递给 PreparedStatement,以提高安全性。所有内部对象缓存都基于WeakHashMap类实现,所以在处理大量事务的时候不会引会内存溢出错误。
下载地址:
Ujorm 的详细介绍:
Ujorm 的下载地址:
转载请注明:文章转载自 开源中国社区
本文标题:Ujorm 1.0 发布,ORM框架
本文地址:事情是样的,同事做了一个页面,需要统计点击次数。原理就是每当打开这个页面时候,其表中一个字段值+1。问题出来了,同事的做法是,他会把表中所有字段值都同时更新一次,那个表估计有20多个字段。有一次浏览那
问题描述事情是样的,同事做了一个页面,需要统计点击次数。原理就是每当打开这个页面时候,其表中一个字段值+1。问题出来了,同事的做法是,他会把表中所有字段值都同时更新一次,那个表估计有20多个字段。有一次浏览那个页面出错了,后来我知道他是这么做的,我说"这样不是浪费资源吗,你只需更新那个字段值不就行了?",他说,面向对象都这样做的,写好的语句就是这样的,不用管它更新多小个,每次更新那个表就行了,然后又说微软也是这样做的。我想问一下大家,同事这样做法对吗??微软给的例子也这样做的?(我没看过微软这类的例子)解决方案本帖最后由 Pcbyincai 于
12:28:54 编辑解决方案二:你让他给你解释下什么是面向对象解决方案三:首先你同事的做法比较合理..因为很多都采用这样的办法..参数对象update之后全部更新..因为一般生成器也会怎样做..因为我不可能给你所有字段还来个排列组合....所以一次性更新简单代码如下uidnamepwdclick1admin1230如果是你你一定会updateasetclick=click+1whereuid=1但是如果采用框架参数对象那么最终执行的是updateasetname='admin',pwd='123',click=1whereuid=1;这就是你手写跟生成器的区别..实际上这就谈到了效率问题.我更新这么多东西实际上原来的值跟之后的值是一样的那么本质到底更新了吗?这个你就不用担心了.答案是"没更新"如果想具体了解请自行搜索.所以针对LZ这个问题.我个人还是偏向前者的做法,也就是针对这个"功能"单独写一个方法.毕竟他不是那么特别的"通用"解决方案四:说不过他,来来回回就一句话,他们是新的.net4.0(我用的还是MicrosoftVisualStudio2005,因为我之前很多网站都是2005做的,所以就一直没有更新到最新版本,他是MicrosoftVisualStudio2010。)说我的技术过时了,新的技术都是他那样做的,一句话就卡死我了。技术有没有过时这另说,但原理是大同的呀,要保证资源尽量少的消耗。他说“新的技术都是他那样做的,面向对象都是他那样做的”跟大伙求证一下,.net4.0真的是我同事说的那样写法吗,也不管优化不优化了吗?解决方案五:引用2楼diaodiaop的回复:首先你同事的做法比较合理..因为很多都采用这样的办法..参数对象update之后全部更新..因为一般生成器也会怎样做..因为我不可能给你所有字段还来个排列组合....所以一次性更新简单代码如下uidnamepwdclick1admin1230如果是你你一定会updateasetclick=click+1whereuid=1但是如果采用框架参数对象那么最终执行的是updateasetname='admin',pwd='123',click=1whereuid=1;这就是你手写跟生成器的区别..实际上这就谈到了效率问题.我更新这么多东西实际上原来的值跟之后的值是一样的那么本质到底更新了吗?这个你就不用担心了.答案是"没更新"如果想具体了解请自行搜索.所以针对LZ这个问题.我个人还是偏向前者的做法,也就是针对这个"功能"单独写一个方法.毕竟他不是那么特别的"通用"这个你错了,是所有字段“更新了”就是那把所有字段都更新了,所以才知道其中一个字段值带了html字符,出错了,才发现这个问题的。解决方案六:引用4楼Pcbyincai的回复:这个你错了,是所有字段“更新了”就是那把所有字段都更新了,所以才知道其中一个字段值带了html字符,出错了,才发现这个问题的。这属于bug,跟更新几个字段无关只更新一个字段,这个字段有html字符,那么也一样出错更新所有字段,都合法,那么也不出错问题就是你认为只更新一个字段更"节省资源"其实节省不了多少资源,反而要为了这么几个字节多写很多代码,而且多写的代码也会造成更多的地方可能出现bug解决方案七:那大伙在实际操作中,都是这样的写法?会更新整个表字段值吗?解决方案八:引用6楼Pcbyincai的回复:那大伙在实际操作中,都是这样的写法?会更新整个表字段值吗?你如果是使用的实体类+orm,数据库表直接映射到实体类的字段,那么当然一更新就会都更新了,简单方便如果是自己拼接SQL语句update,那么就根据业务需要,该更新几个就更新几个呗不过我自己来做,即使是自己拼接update,也会将要更新的几个字段一起都更新掉,而不去判断到底哪些改了哪些没有改,太繁琐,而且没有什么太大的意义解决方案九:要么是偷懒、要么就是不知道怎么办、要么就是想到这个bug可能会联动的改很多东西心里发慌,总之是在为他自己找理由。什么2.04.0,什么面向对象,什么微软是怎么怎么做的,程序员不要刻板的活在自己的世界里,产品最终要基于现实,现实需求决定产品设计,与现实矛盾的或是反人类的,总之一点,改!解决方案十:嗯,你可以把“更新20个字段”跟“更新个字段”两个方法的速度测试一下(重复几百次,取平均值),然后把结果贴出来!从设计上看,更新20个字段还是更新1个字段,最主要地区别应该是业务含义上的区别,而不是什么“几个字段”的区别。既当“信息被读取”时是否就等价于“信息被修改”呢?这是不是胡乱修改了呢?这是业务设计上的区别,也就是一个属性是否应该属于此对象(或者表)的属性的区别,这个概念更重要!如果一个属性根本不属于对象的职责,而被胡乱赋予了这个对象,那么这是设计错误,而不是什么编程技术或者数据库技术的问题了。解决方案十一:我猜数据库表结构是这样的:(id,标题,文章内容,点击量)可能还有别的字段,这几个是最主要的字段如果你不使用实体类来绑定,而是自己写update那么更新文章应该和更新点击量是2个完全不同的业务逻辑更新文章就应该updateset内容=xxxwherexxx而更新点击量就是update点击量=点击量+1wherexxx而如果是绑定了实体类,那么就是一次性更新全部的内容在更新文章的时候,直接:实体类.内容=update();更新点击量的时候,实体类.点击量++;update();解决方案十二:引用8楼ajianchina的回复:要么是偷懒、要么就是不知道怎么办、要么就是想到这个bug可能会联动的改很多东西心里发慌,总之是在为他自己找理由。什么2.04.0,什么面向对象,什么微软是怎么怎么做的,程序员不要刻板的活在自己的世界里,产品最终要基于现实,现实需求决定产品设计,与现实矛盾的或是反人类的,总之一点,改!晕,没听明白呀,我想问一下,你实际操作会怎么做呢?是更新一个,还是更新所有的?因为我一直是认为更新一个省资源。还有,我有时会用到数据库的存储过程,比如:一起运算几个表的值时候,去更新另一个表值。而那我同事则不是,他是分别过net程序得表的值,再去用net程更新另一个表的值。我觉得我同事那个做法,是不是太浪费数据库资源了。解决方案十三:如果是单纯的技术问题,应该用测试数据来说话,不一定只有一种“未来的理想”做法,当你刚开始时你没有必要为了几个月之后的重构而提前动手。这个时候贴出具体的测试数据就行了。而“这样不是浪费资源吗,你只需更新那个字段值不就行了”这个说法其实也是纠结在技术上的。你不承认人家可以将一个对象完整地保存到数据库,非要人家将对象任意拆成n种字段组合来按照你的要求随意保存不同的字段,这其实就是纠结在技术上。如果你承认人家的出发点,就可以换一种思路来说服人家。这个简单的“点击数”属性跟页面是可以分开的。这就好像每个人可能都有自己的内裤,但是内裤跟人的身体是分离的东西,内裤是可以经常换洗的。解决方案十四:引用11楼Pcbyincai的回复:晕,没听明白呀,我想问一下,你实际操作会怎么做呢?是更新一个,还是更新所有的?因为我一直是认为更新一个省资源。还有,我有时会用到数据库的存储过程,比如:一起运算几个表的值时候,去更新另一个表值。而那我同事则不是,他是分别过net程序得表的值,再去用net程更新另一个表的值。我觉得我同事那个做法,是不是太浪费数据库资源了。你存在2个误区:1.认为更新1个字段节省资源这样做确实网络传输的字节会少一些,但是对于局域网应用100M带宽来说,节省的这几K字节其实完全无关紧要但是为此要付出更多的工作量(代码量)和量,其实很多时候是得不偿失的.万一你有一个表里有100个字段呢??2.认为存储过程更好,节约资源,安全性高你节约了web服务器的CPU,但是这部分工作是交给数据服务器处理了对于有多个web服务器负载均衡,而共享一个数据服务器的网络模型来说,数据服务器是瓶颈,反而应该把它解放出来,不要分担过多的工作,而是把工作让多个web服务器来做才对而且改动任何逻辑,都要去动数据库的存储过程,对于团队合作来说是很不利的不要大家都去改数据库,而是自己改自己的代码.解决方案十五:大家一般都这么做,但其实不代表这么做是对了,主要是因为一般写代码时再DAL会提供一个对单表整体修改操作的方法,所以在合理的情况下,这么做是没问题,什么是合理呢?比如你了解这么做不会造成数据错误,或者就算数据错误也无所谓的(特别重要的是:一般情况下,会在Update之前先Select数据,这会造成消耗),但如果你这个只是+1的话,单独写个方法更合理,因为用updatetablesetnum=num+1whereid=id明显比读取出来后再整体更新更合理,可以假想下要是并发很高,读取再更新会造成多少消耗,多少数据丢失!所以你同事做法是错误的!解决方案:技术上不要去纠结人家是不是“一次更新对象”的问题,从业务粒度上考虑就行了。例如你可以这样设计:页面点击数至少应该再考虑一下别的字段:“统计的来源”(例如是通过前端javascript触发的还是通过服务器端load触发的),“统计的版本”(例如每天合计一次,或者每小时合计一次)..........考虑到任何扩展,那么页面统计都是可以与页面分离的。解决方案:引用3楼Pcbyincai的回复:说不过他,来来回回就一句话,他们是新的.net4.0(我用的还是MicrosoftVisualStudio2005,因为我之前很多网站都是2005做的,所以就一直没有更新到最新版本,他是MicrosoftVisualStudio2010。)说我的技术过时了,新的技术都是他那样做的,一句话就卡死我了。技术有没有过时这另说,但原理是大同的呀,要保证资源尽量少的消耗。他说“新的技术都是他那样做的,面向对象都是他那样做的”跟大伙求证一下,.net4.0真的是我同事说的那样写法吗,也不管优化不优化了吗?他是个“二百五”,强词夺理。技术需要站在对方的角度去讨论,才能搞明白。而他完全可能完全不像承认存在关于“效率”的取舍平衡规则,那对于他自己来说,肯定也是不能发展的。解决方案:引用14楼starfd的回复:大家一般都这么做,但其实不代表这么做是对了,主要是因为一般写代码时再DAL会提供一个对单表整体修改操作的方法,所以在合理的情况下,这么做是没问题,什么是合理呢?比如你了解这么做不会造成数据错误,或者就算数据错误也无所谓的(特别重要的是:一般情况下,会在Update之前先Select数据,这会造成消耗),但如果你这个只是+1的话,单独写个方法更合理,因为用updatetablesetnum=num+1whereid=id明显比读取出来后再整体更新更合理,可以假想下要是并发很高,读取再更新会造成多少消耗,多少数据丢失!所以你同事做法是错误的!是的,我当时观点也是这样,就好比一套内部ERP之类的系统,你同时打开这个页面的人估计最多不会超过10个,与一个网站有可能同时1000个点击的意义不同,我说这样做真有可能会卡住在那里?我们现在做的网站,这样做是不可取!不过看到大家的说法,也是很受益的,每个人强调的地方不一样。不过这句很好“Quote:最主要地区别应该是业务含义上的区别,而不是什么“几个字段”的区别。既当“信息被读取”时是否就等价于“信息被修改”呢?这是不是胡乱修改了呢?这是业务设计上的区别,也就是一个属性是否应该属于此对象(或者表)的属性的区别,这个概念更重要!如果一个属性根本不属于对象的职责,而被胡乱赋予了这个对象,那么这是设计错误Quote:”解决方案:引用14楼starfd的回复:大家一般都这么做,但其实不代表这么做是对了,主要是因为一般写代码时再DAL会提供一个对单表整体修改操作的方法,所以在合理的情况下,这么做是没问题,什么是合理呢?比如你了解这么做不会造成数据错误,或者就算数据错误也无所谓的(特别重要的是:一般情况下,会在Update之前先Select数据,这会造成消耗),但如果你这个只是+1的话,单独写个方法更合理,因为用updatetablesetnum=num+1whereid=id明显比读取出来后再整体更新更合理,可以假想下要是并发很高,读取再更新会造成多少消耗,多少数据丢失!所以你同事做法是错误的!其实是否每次更新之前都必须读取,不仅是技术手段,更是业务逻辑上的问题如果文章更新非常不频繁,那么完全可以用缓存或者干脆用静态类,这就不存在每次更新点击量之前都必须读取一遍的问题,直接在内存里修改然后update就行了到底采用什么技术手段,应该根据业务逻辑的不同来进行取舍,而不是一味的强调技术解决方案:就点击浏览这个需求看,肯定是“只更新一个字段”。其实LZ也知道自己是对的,但是同事之间讨论技术,还是要看实际情况。你说他错,他一定不会承认。解决方案:引用18楼Z的回复:其实是否每次更新之前都必须读取,不仅是技术手段,更是业务逻辑上的问题如果文章更新非常不频繁,那么完全可以用缓存或者干脆用静态类,这就不存在每次更新点击量之前都必须读取一遍的问题,直接在内存里修改然后update就行了到底采用什么技术手段,应该根据业务逻辑的不同来进行取舍,而不是一味的强调技术所以我的标题是“有个思路问题,希望大家给点意见!”我所强调是思路,我当时就认为他在这点的思路明显就不对。解决方案:引用20楼Pcbyincai的回复:所以我的标题是“有个思路问题,希望大家给点意见!”我所强调是思路,我当时就认为他在这点的思路明显就不对。我也并不是说你的思路就是错误的.只是说你看待问题的角度有问题.不要首先从技术和执行效率上去入手看待问题,而是应该先看业务逻辑是否有问题.这一点上还要看你的同事的业务逻辑到底是怎么实现的,是否像我说的那样用的静态类,还是说每次点击都先读取一遍数据库.所以一开始就不是到底更新几个字段的问题.解决方案:引用21楼Z的回复:Quote: 引用20楼Pcbyincai的回复:所以我的标题是“有个思路问题,希望大家给点意见!”我所强调是思路,我当时就认为他在这点的思路明显就不对。我也并不是说你的思路就是错误的.只是说你看待问题的角度有问题.不要首先从技术和执行效率上去入手看待问题,而是应该先看业务逻辑是否有问题.这一点上还要看你的同事的业务逻辑到底是怎么实现的,是否像我说的那样用的静态类,还是说每次点击都先读取一遍数据库.所以一开始就不是到底更新几个字段的问题.页面是动态页,每次浏览时,先读数据显示,然后接着再更新表中点击数的解决方案:引用19楼yeness的回复:就点击浏览这个需求看,肯定是“只更新一个字段”。正解!但一般情况下没必要在单独写个update方法。更新一条记录,和更新一两个字段的值几乎没啥效率问题。至于同事说的面向对象,可以这么理解,我要更新一条记录,就是我要更新一个对象,而目前的需求是我要更新这个对象里面的某一个属性值。最后我在说说编程效率和系统效率,这两个需要程序员自己来权衡,在效率可以忽略不计的情况下,编程效率至上,在效率影响系统使用的情况下,效率至上。解决方案:这属于技术问题,架构太乱解决方案:引用24楼enpterexpress的回复:这属于技术问题,架构太乱架构乱不乱不是技术问题这是设计问题整个业务逻辑的设计就很混乱解决方案:干脆直接把文章内容和点击数拆成两个表不就没这个纠结了,内容表的某条记录万年不变,点击数的表里对应的记录想怎么折腾怎么折腾解决方案:在使用一些ORM框架的时候,确实是一次发送多个字段更新的。因为上帝也不知道,你这个对象那些是变更的。就只有全部更新了。数据库收到更新指令后,会检查内容是否变更了,没有变就不执行更新。为什么这样做了?因为多数时候,更新是比较少的,多数是在读取操作。所以看不出性能差别。但是在关键的地方,需要性能的时候,是需要单独写代码进行更新的。你这个情况,如果文章内容有几KB或者更大的话,性能就会有影响。你的同事不过是懒而已,那里与面向对象有关。解决方案:感觉是在黑面向对象啊?不过是个低端黑...解决方案:引用13楼於黾的回复:Quote: 引用11楼Pcbyincai的回复:晕,没听明白呀,我想问一下,你实际操作会怎么做呢?是更新一个,还是更新所有的?因为我一直是认为更新一个省资源。还有,我有时会用到数据库的存储过程,比如:一起运算几个表的值时候,去更新另一个表值。而那我同事则不是,他是分别过net程序得表的值,再去用net程更新另一个表的值。我觉得我同事那个做法,是不是太浪费数据库资源了。你存在2个误区:1.认为更新1个字段节省资源这样做确实网络传输的字节会少一些,但是对于局域网应用100M带宽来说,节省的这几K字节其实完全无关紧要但是为此要付出更多的工作量(代码量)和计算量,其实很多时候是得不偿失的.万一你有一个表里有100个字段呢??2.认为存储过程更好,节约资源,安全性高你节约了web服务器的CPU,但是这部分工作是交给数据服务器处理了对于有多个web服务器负载均衡,而共享一个数据服务器的网络模型来说,数据服务器是瓶颈,反而应该把它解放出来,不要分担过多的工作,而是把工作让多个web服务器来做才对而且改动任何逻辑,都要去动数据库的存储过程,对于团队合作来说是很不利的不要大家都去改数据库,而是自己改自己的代码.同意。存储过程不好维护。当你看到几百行,经过多人修改的存储过程时,就相当郁闷了。另外,数据库的高手比较难找,写C++/java的人要便宜点。代码里写SQL,升级影响面好一点。解决方案:解决方案:1.面向对象是一种思路,不是工具,和版本不版本没有关系2.工具是为了优化工作效率而制造,所以会有更多封装,版本升级会有更多更完善3.在实际使用场景不一样的情况下,对工作效率和产品性能需要根据实际情况进行分析处理,并非工具如此就一定是最好的4.根据实际情况拿出两种做法的结果进行对比,选择更适合当前项目需要的场景5.尽信书不如无书,多思考是好事,有助于你项目思路,框架方面的发展总结,根据你的项目场景,更同意,把信息表和统计表拆分,同时更新时候通过直接更新一个字段的做法,另外需要优化数据表索引,进一步优化效率。如果访问量大,频繁更新数据库,建议进行缓存操作定时更新或者异步更新,多进一步思考,有助于自身发展。解决方案:在保存数据正确的情况下,更新一个字段,和更新所有字段在资源上能有多少区别,0.001秒的区别吗?我觉的用浪费资源的理由来说是通不过的。我们在保存数据前,都是先从数据库中select出来数据,再修改被用户修改过的属性,再整个保存回数据库,如果按楼主所说的浪费资源,那都不知道浪费多少资源了,但事实上我们这样做一直都没问题。如果你想要更小粒度的修改,那么你就需要更小粒度的model,比如你这个点击次数,你可以先将点击次数相关属性提出来成为ujfj独的model,然后只更新这个model即可。当然,如果你想直接写sql除外。解决方案:引用14楼starfd的回复:大家一般都这么做,但其实不代表这么做是对了,主要是因为一般写代码时再DAL会提供一个对单表整体修改操作的方法,所以在合理的情况下,这么做是没问题,什么是合理呢?比如你了解这么做不会造成数据错误,或者就算数据错误也无所谓的(特别重要的是:一般情况下,会在Update之前先Select数据,这会造成消耗),但如果你这个只是+1的话,单独写个方法更合理,因为用updatetablesetnum=num+1whereid=id明显比读取出来后再整体更新更合理,可以假想下要是并发很高,读取再更新会造成多少消耗,多少数据丢失!所以你同事做法是错误的!你觉的select会消耗资源,但很多情况下这个是必须的。说个例子(我做的是erp,所以以erp为例),用户做一个表单,做这个表单是需要时间的,你在做这个单的时候,别人也有可能在做这个单,所以当你在保存的时候,你读出来的数据可能已经被更新掉了。也许你会说,加时间戳就可以了,但如果这个表单本就允许多个人同时操作,而且多个人操作的结果也没有违反业务规则,你就不能不允许甚至是给用户警告,所以select是必须的。解决方案:引用11楼Pcbyincai的回复:Quote: 引用8楼ajianchina的回复:要么是偷懒、要么就是不知道怎么办、要么就是想到这个bug可能会联动的改很多东西心里发慌,总之是在为他自己找理由。什么2.04.0,什么面向对象,什么微软是怎么怎么做的,程序员不要刻板的活在自己的世界里,产品最终要基于现实,现实需求决定产品设计,与现实矛盾的或是反人类的,总之一点,改!晕,没听明白呀,我想问一下,你实际操作会怎么做呢?是更新一个,还是更新所有的?因为我一直是认为更新一个省资源。还有,我有时会用到数据库的存储过程,比如:一起运算几个表的值时候,去更新另一个表值。而那我同事则不是,他是分别过net程序得表的值,再去用net程更新另一个表的值。我觉得我同事那个做法,是不是太浪费数据库资源了。最烦的就是用存储过程和触发器了,级联触发,开发效率低,可复用性差,现在也不存在所谓的提高执行效率了,而且出了bug你就等死吧,调试死你都不知道bug在那里。解决方案:这样的做法显然是不对的,与业务需求冲突的,但是这不是面向对象的问题,也不是ORM的问题,如果是微软的问题只能说微软的ORM有性能问题。另外如果真的在意性能问题,对于频繁更新的非重要数据,应该在内存中缓存起来批量更新。另外楼主可以试试中基于缓存框架的单表ORM。解决方案:如果lz是使用ef,在新版本中,框架会自动检测修改了哪些字段,如果使用老版本,可以在保存实体时标记要更新的字段解决方案:引用36楼周小黑的回复:如果lz是使用ef,在新版本中,框架会自动检测修改了哪些字段,如果使用老版本,可以在保存实体时标记要更新的字段最好的做法是更新实体是向数据上下文标识你要更新的字段解决方案:为什么是更新整个表,不是那一条数据
【云栖快讯】首届阿里巴巴中间件技术峰会,揭秘阿里10年分布式技术沉淀!阿里高可用体系核心缔造者、全链路压测创始人,DRDS与TDDL负责人等大咖出场,干货分享,不可错过!&&
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
RDS是一种稳定可靠、可弹性伸缩的在线数据库服务。支持MySQL、SQL Server、PostgreSQL、高...

我要回帖

更多关于 不知道学什么技术好 的文章

 

随机推荐