CZTZ-JavaEE Web开发基础平台系列培训(一)
数据库设计规范
题外话:一个优秀的程序员和架构师,不应该只是一个学习机器,同样要有创造性思维和开阔的技术视野,独到的技术视角和哲学性思维。
一、前言
CZTZ-JavaEE Web开发平台包括基础开发平台、产品线开发平台、行业基础平台三部分组成。目前正在进行基础平台的开发工作,并在筹建产品线开发平台项目组。
CZTZ-JavaEE Web开发平台的运作方式是基础平台由核心平台项目组研发,可以在此平台上集成第三方应用软件供应商的产品,在营销环节可作为统一的品牌进行市场推广,利润分配本着互惠互利,共同发展的原则,共同拓展庞大的中国应用软件市场。
CZTZ-JavaEE基础平台主要实现后台增删改查类应用的快速开发,并整合了Acegi安全框架、CAS单点登录和其他单点登录机制,权限管理功能强大,另外还包括信息发布及页面静态化、站内全文检索(包括信息检索、文件检索,可定制的数据库全文检索功能)。
CZTZ-JavaEE的产品线开发平台实际是企业级开发平台,包括搜索引擎、工作流、OA,ERP,电子商务、Portal、博客、动态报表、知识管理、BI分析工具等内容。本项目组在全国各地诚征有自主知识产权的软件供应商或优秀的原创应用软件开发者共同研发,共同推广。有意者请发Email及产品简介、Demo或个人技术专长至succ100@163.com王先生收。
历史上曾经有句名言:让全世界无产者联合起来!在国内,有很多正在创业的中小软件公司、程序员及正在苦寻职业道路的大学毕业生,在这个群体里,每个个体的资源是极为有限的(这里的资源包括技术资源、产品资源、市场资源),但如果我们能将这些技术资源、产品资源和市场资源有机整合起来,成功一定也会向我们招手。在此我也呼吁:让全国的IT创业者们联合起来!
在这里我简单地谈一下我的个人感受。我曾经抱有这样一个想法:在大公司里勤奋工作,过几年总可以上升到一个比较高级的职位,拿更高的薪水,但现实打破了我的梦想,因为大公司的高层管理人员都是直接从外面聘任的,他们的教育背景都非常好,我们长年作为一线的开发人员和开发经理,虽然在产品研发上积累了相当多的经验,但我们的技术实力,在一个有着类似国企的管理体制下是很难得到重视的,虽然我们的技术实力每年度都在飞速提高,但公司不会经常为你的技术能力进行客观地评估,并根据你的技术能力和工作成绩调整你的个人薪资。我曾经实施了一个项目,在项目研发的一年期间,基本每周都是工作六天(没有加班费),在客户现场开发,晚上至少是九点半以后回去休息,以这样的工作态度和热情,居然项目组里没有一人成为季度的优秀员工。我曾经调侃地对大家说:这说明公司评选的是优秀的员工,而不是更优秀的员工,因为我们是更优秀的,所以没有被评上。实际上,我们根本没有参与投票评比,优秀员工名单是上面早就拟订好的。媒体上曾经评价IT人员跳槽率高,实际上这绝对不是我们的错,因为,在大多数公司,没有年度调整薪资的机制,只有跳槽才能加薪。也许这是因为企业领导者骨子里认为反正人才多的是(表面上仍然要说尊重人才,留住人才),少了谁公司都能运转。在事实上,他们更在乎的是营销人员的流失,而不是技术人员的流失,所以技术人员在与公司谈加薪时并没有多少筹码,尤其是做项目的公司,在项目管理中,代码,文档,设计资料都被很规范地管理起来,所以一个人的去留,不会对项目造成冲击,至少我所管理的项目是这样的。我作为研发经理,虽然项目的整体架构都是我来设计的,但我将设计思想灌输到了每个开发人员的脑子里,所以我离开项目组时,并没有太多要交接的内容,这是作为开发经理的职责。
作为从事IT技术工作的程序员、设计师和架构师,我们崇尚技术,追求财富。因为崇尚技术,忽略了人际关系的培养,所以在与上司、同事、下属相处不快时,便心生去意,跳槽的想法就在心里油然而生,因为我们不善于处理人际关系、漠视政治(不是说国家大事),漠视人事斗争,因而我们在一定的程度上说,我们不具有斗争性,我们是弱势群体。在这个时代,崇尚的个性的张扬,而不是桃李不言,酒香不怕巷子深,所以我们要呐喊-在我们自己的技术领域,我们要引导技术的潮流,在市场营销领域,我们再也不能说:这不是我们的长项,我们必须不能再一味地闷头研究技术,至少我们要抽出30%的精力来拓展销售渠道,相对来说,技术人员做面对客户的直销虽然很难,但做渠道销售一点都不难,既然我们已经预期了我们有很好的应用平台,我们就有了热情,有了向周围朋友宣传平台的兴致,我们可以把我们周围开软件公司的朋友,做销售的朋友列一个名单,然后了解平台的应用价值和运作模式后,然后开始向他们宣传吧,将他们拉入我们的销售队伍中!我想你的朋友一定会支持你的。我甚至都想到了向我推荐做安利的朋友,把他们也拉进来,毕竟,我们所营销的是高技术的产品和服务,不会有人用异样的质疑的眼光来看你,一句话,拓展一切可能拓展的销售渠道!
我们的群体是崇尚技术革命的群体,同样也是注重市场、注重客户需求的群体。在基础平台从07年度11月份开始设计时,应用的都是Java开源社区最新release版本的框架,包括Spring,Hibernate,Struts,Acegi,Webwork,FckEdit,Jfreechart,Lucene,Cas,Jforum, dhtmlxTree…,
平台研发组的技术负责人在IT行业的工作经验有的多达十年以上。即使大家对CZTZ的商业运作不感兴趣,也欢迎大家就中国的Java应用开发平台应该具备什么特色的角度,为CZTZ平台提出一些看法吧。国外在开源领域开发了那么多优秀的基础框架,国内在这方面很难超越他们,但是中国有那么多的大中小型企业,我们至少在Java应用开发平台方面可以超越他们(应用平台,就是架设在基础框架下的快速开发和快速客户化的企业应用套件。)
由于CZTZ-JavaEE平台的开发成员是来自全国各地的,培训和交流多有不便,所以本人在CSDN博客上不定期地编写文档为项目组成员进行技术培训,欢迎大家经常到http://blog.csdn.net/baozhengw上面浏览本人的最新文章,并发表评论。
二、CZTZ-JavaEE Web应用平台数据库设计规范
2.1适用范围:本规范适用于新开发模块,对于第三方集成应用不受此限制。
2.2 各子系统使用的表前缀:
eas:基础平台,例eas_meta_table
cms:内容管理,例cms_info
pur:采购管理
inv:库存管理
sal:销售管理
mrp:生产管理和MRP
hr:人力资源
wf:工作流平台
oa:办公自动化
km:知识管理
blog:博客
sso:单点登录
其他未定义的模块在设计前确定。
2.3:表命名规范
数据库表的命名为子系统名_为前缀,表名中下划线不能超过两个。表名的长度不应超过20位字符串长度。
2.4字段定义规范
字段名中出现下划线不能超过2个,字段名长度不能超过30字符串长度,字段中单词尽量用缩写,例如:
dt表示日期时间,flg表示flag。
表设计的原则为除多对多关系表外,一般采用唯一主键的原则进行设计,由于我们采用Hibernate进行开发,所以单一主键在平台开发中非常便利,单一主键的序列号一般由随机数生成器生成(通过StringUtil.getUUID()生成32位唯一ID)。
唯一主键一般命名为obj_id
以下是一些通用的表字段:
sort_no int NULL,排序号,用于指定记录排序顺序
row_id varchar(40) 行唯一ID,这个是非空的字段,记录创建赋值一次以后不再变更。
create_dt varchar(23) 记录创建时间,字符串型日期时分秒毫秒
create_uid varchar(40) 创建者登录帐号
update_dt varchar(23) 最后修改时间
update_uid varchar(40) 最后修改者登录帐号
对于树型关系表,如组织结构树的设计,一般采用001001001这种级次码维护树型关系,一般这样设计树型结构的表:
obj_id varchar(40)
tree_code varchar(30) 树节点编码,如001002,当节点关系改变时,tree_code会发生变化,但obj_id是不变的。
is_leaf varchar(16),表示是否为叶子节点,可为空,取值为true/false。
2.5 存储过程的使用原则
在产品基础平台上一定不要使用存储过程、触发器进行开发,只有当产品销售给客户后才可以根据客户选择的数据库,有针对性地从性能角度考虑,将部分实现类替换为存储过程实现。
2.6 程序中使用SQL的注意事项
由于不可避免地要在某些地方使用SQL语句,在使用SQL语句时需要遵循的原则,只允许使用标准SQL,象字符串列相加,有的RDBMS采用+进行字符串连接,有的采用||,左连接和右连接在不同的RDBMS有left outer join, (+)=,*=,等表达形式,还有数据库函数等,这些SQL一定不能硬编码到程序中,如果一定要引用特定数据库相关的SQL语句,请在配置文件中定义SQL字符串,然后在程序中通过读取配置文件的SQL字符串来形成SQL语句,这样一旦数据库替换为其他RDBMS,可以通过在配置文件中重新配置SQL来实现,这样可以避免重新编译程序。
在数据库设计中,日期字段一般用字符串日期来表示,不要将数据库字段设置为日期型,以减少数据库移植带来的开发成本。一般只设计字符串型和数字型字段,特殊情况下有大文本字段。
2.7数据库表外键命名规则
由于每个表在设计时都给定了编号,如0010和0020,表编号大的表,其外键肯定指向表编号小的表,外键命名可按FK_0020_0010,即0010表的主键为0020表的外键。
2.8 由表反向生成Hibernate映射文件
由表反向生成Hibernate映射文件可网上参考MyEclipse相关的开发,有多种工具可以实现工数据库反向生成Hibernate映射文件,在平台开发中,反向生成映射文件由专人负责完成。
三、规范的说明
本规范在以后的开发中会逐渐完善。
分享到:
相关推荐
第五次作业函数第一题--
本项目旨在利用深度学习方法实现作物病害的自动诊断。作物病害是农业生产中的重要问题,及时诊断和处理对于减少产量损失至关重要。 我们采用深度学习算法,通过分析作物的图像,实现对病害的自动识别和分类。项目使用的数据集包括公开的作物病害图像数据集,如ISIC等,并进行了预处理,包括图像增强、分割和特征提取等。 在运行环境方面,我们使用Python编程语言,基于TensorFlow、PyTorch等深度学习框架进行开发。为了提高计算效率,我们还使用了GPU加速计算。此外,我们还采用了Docker容器技术,确保实验结果的可重复性。 项目完成后,将实现对作物病害的快速、准确诊断,为农业生产提供有力支持,有助于减少产量损失。同时,项目成果也可应用于其他图像识别和分类任务。
机械设计CD驱动印刷设备step非常好的设计图纸100%好用.zip
python烟花代码
附件中是一个简单的烟花效果的代码示例: 在Python中,可以使用多种方式来模拟烟花效果,其中一种常用的方法是使用turtle模块,它提供了一个画布和一个小海龟,可以用来绘制各种图形。 这段代码首先导入了turtle模块和random模块,然后在屏幕上绘制了10次烟花爆炸的效果。每次爆炸都是由5个小圆组成,颜色随机选择,圆的大小也是随机的。 请注意,这段代码需要在支持turtle模块的Python环境中运行,并且需要有图形界面的支持。如果你在没有图形界面的环境中(比如某些服务器或者命令行界面),这段代码可能无法正常运行。
商业化产品经理,到底如何实现产品商业化?.docx
Panduit 工业以太网部件内部销售指南
在Java中,实现一个三维装箱(也称为三维背包问题)的算法通常涉及到组合优化和动态规划。这个问题是一个典型的优化问题,其中目标是在三个维度的限制下最大化价值的总和。下面是一个简单的Java代码示例,它使用动态规划来解决三维装箱问题。 请注意,这个代码只是一个简单的示例,它假设所有物品的第三个维度的大小都是1,并且没有给出如何回溯选择物品的完整逻辑。在实际应用中,三维装箱问题可能更加复杂,需要考虑所有三个维度的限制,并且可能需要更复杂的算法来解决。 此外,这个问题的解决方案可能需要根据具体问题的要求进行调整,例如物品是否可以分割、是否允许超过一个的物品等。如果你有特定的问题描述或者需要进一步的帮助,请提供更多的细节。
常用品牌EPLAN部件库
单片机开发的教程可以分为以下几个步骤: 1. 了解单片机基础知识:在学习单片机开发之前,需要了解单片机的相关知识,包括单片机的基本结构、指令系统、编程语言等。 2. 选择开发板:选择一款适合自己学习开发板的型号和厂商,通常需要关注开发板的性价比、开发环境是否友好等因素。 3. 学习开发环境:根据所选的开发板,学习相关的开发环境和使用方法,例如Keil、IAR等集成开发环境。 4. 掌握编程语言:单片机常用的编程语言包括C语言和汇编语言,根据实际情况选择其中一种进行学习。 5. 基础操作:熟悉单片机的引脚定义和IO口配置,了解单片机的启动代码,可以通过修改启动代码进行基本功能调试。 6. 综合实践:根据具体项目需求,进行单片机开发的综合实践。在实践中需要掌握如何编写程序、如何进行硬件调试、如何使用相关工具软件等技能。 下面是一个单片机开发的简单教程介绍: 首先,确定所使用的单片机型号和开发板类型。在这个阶段,需要查阅相关资料,了解开发板的规格书、芯片规格等基本资料。 其次,安装并配置开发环境。根据所选的开发板,安装相应的集成开发环境(IDE),并配置好开发环境。 接着,学习并掌
Q1.ipynb
(自适应手机端)IT网络建站公司pbootcms模板 互联网营销企业网站源码下载.zip
Bematech 激光扫描器用户手册
激励视频接入文档.pdf
java jdk1.8 202版本下载window linux打包
Lite Beam M5快速指南
互联网金融导论.docx
字节跳动青训营——抖音项目
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。