我的编程空间,编程开发者的网络收藏夹
学习永远不晚

J-Hi的生成器有什么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

J-Hi的生成器有什么用

这篇文章给大家分享的是有关J-Hi的生成器有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

数据库相关

对应不同的数据库J-Hi会生成不同的数据库脚本文件,生成的文件会临时存放在web/db目录下的相关数据库(MSSQL/MYSQL/ORACLE)子目录下,每次生成该目录下的文件都会清理一次。生成的文件如下:

xxx.sql 定义该服务下所有实体(枚举实体除外)的数据库表的创建

xxx_BaseData.sql用于对该服务下的实体,为系统表插入相关数据,系统表包括:菜单、权限、枚举等,通过该文件会将与实体相关的菜单信息,权限信息等一次性的插入到系统表中

Java相关

因为Java含盖的框架有很多,采用不同的框架不同的技术生成的内容会有所不同,下面让我们按三层结构的原理划分说明:

数据访问层

xxx.dao包为数据访问层的总包,对应不同的ORM框架还会有相应的子包,比如hibernate、ibatis(ibatis2)、ibatis3等子包。

***DAO.java:在dao包下这是个接口,用于规范不同框架之间的差异。

hibernate子包:

***DAOHibernate.java:hibernate数据访问的具体实现类,该类继承BaseDAOHibernate,从而实现对hibernate的封装

***.hbm.xml:该文件是hibernate的映射文件

我们之所以把ibatis的两个不同版本分两个子包来管理,是因为ibatis2与ibatis3在底层实现上已经有很大的差异,无论是内部运行原理还是配置文件基本上是颠覆性的变化。

ibatis子包

***DAOIbatis.java:ibatis2数据访问的具实体现类,该类继承BaseDAOIbatis,从而实现对Ibatis2的封装

***.ism.xml:ibatis2的映射文件,之所以后缀叫ism是指ibatis sql mapping

ibatis3子包

***DAOIbatis3.java:ibatis3数据访问的具实体现类,该类继承BaseDAOIbatis,从而实现对Ibatis3的封装

***.ism3.xml:ibatis3的映射文件,之所以后缀叫ism是指ibatis3 sql mapping

业务逻辑层

业务逻辑层J-Hi采用的是spring,因此大体上与spring的标准结构完全相同

xxx.service包为业务逻辑层的总包,接口定义在该包下

***Manager.java:业务逻辑的接口类文件,缺省生成的是实体的增删查改方法,如果在业务逻辑层中想做权限控制,可以调用*Security***()方法

xxx.service.impl包下的

***ManagerImpl.java:是业务逻辑的具体类,该类继承ManagerImpl类。如果是特定的业务逻辑一定要在该类中通过手写代码的形式实现之

appContext-xxx.xml:是spring的配置文件,放在置在xxx包下

表现层

xxx.action包为表现层的总包,对应不同的表现层框架会有相应的子包,比如webwork、struts等子包。

***PageInfo.java:在action总包下,该类是与框架无关的,实际上该类记录页面信息的一个POJO,信息主要包括三部分:1)翻页(page):行数、当前页数等;2)过滤器(filter):即查询条件;3)排序器(sorter):即正序倒序

webwork子包:

***ListAction.java:查询页面时所调用的动作

***.RemoveActoin.java:删除记录时所调用的动作

***.RemoveAllActoin.java:批量删除时所调用的动作

***SaveAction.java:保存记录时所调用的动作

***.ViewAllActoin.java:查看记录时所调用的动作

xwork-xxx.xml:webwork的配置文件

与webwork相比,struts的类文件只有一个,所以的动作都是通过方法命名调用实现的,我们之所以做成两种生成方式,是想考虑用户会有个自不同的编程偏好,从而我们为些在不同框架间提供两种生成模式,以适应这种编程偏好的差异

struts子包:

平台目前舍弃了对struts1.x的支持,所以与struts相关都是以struts2为前提的

***Action.java:该Action包括了所有的页面调用动作,通过方法命名进行调度

struts-xxx.xml:struts2的配置文件

POJO及其它

在xxx.model包为POJO的总包,一个POJO实际上是由两个类文件组成的,即

***Abstract.java:该类是POJO的抽象类

***.java:该类是POJO的具体类

之所以这样做是为了避免手写的代码会被生成器生成的文件所覆盖

***.java:如果在定义是有枚举实体,在model包下还有会生对应枚举实体的常量类文件

***-conversion.properties:如果实体有从实体,也就是主从结构,生成器对应主实体生成该文件,其目的是为了适应表现层框架对页面信息的对象化封装

xxx--security.properties:该文件放置在xxx包下,是权限的映射信息的配置文件

页面相关

以后生成器会根据所选模版不同,而对应生成的页面会有很大差异,现在以目前平台的经典模版为例

***List.jsp:查询页面

***Edit.jsp:编辑页面

***View.jsp:查看页面

***.js:与JSP文件应对应的javascript文件

源数据相关

***.hsc.xml 对应每个服务,平台在WEB-INF/matadate目录下都会生成一个源数据的描述文件。该文件记录了定义了模型的全部信息。hsc的意义为:hi service config

基于平台生成器避免手动代码被覆盖的解决方案

如果您采用本平台开发,理论上80%以上的代码都是生成出来的。这样就带来了一个新问题—如何保证我手动改写或添加的代码不会被生成器生成的文件所覆盖?

考虑到上述问题生成器在生成文件时有如下规则:

生成器会反复生成并覆盖以下类与文件:

i. model.original包下的抽象类

ii. action包下***PageInfo类

iii. model包下的***.hbm.xml文件

iv. 服务根包下的appContext-***.xml文件

v. 服务根包下的***-security.properties文件

vi. class="lazy" data-src根下的xwork-***.xml文件

除上述文件外,生成器对生成其它文件时均会判断是否以存在,如果存生就不再生成也不会覆盖已生成或手动修改类或配置文件的内容

从反复生成的文件规则上可以看出,生成器只会反复生成:

1) 与实体属性密切相关的类或配置文件如模型的抽象类与***PageInfo、***.hbm.xml,因为实体中的属性名称或数量发生变化,生成器要适应对实体属性的变化

2) 与整个服务相关的配置文件如xwork-***.xml、appContext-***.xml等等,因为一个服务下会有多个实体,生成器要适应服务下实体数据库的增减

3) 对于那些与实体相关并且不与服务或实体属性相关的类生成器却只会生成一次如dao、service、action下的所有类,以保证您手写的代码不会被生成器所覆盖

在基于平台开发时,因采用生成器生成所以可以使用如下解决方案来避免您手写的代码或配置不会被生成器所覆盖

i. 如果您要对模型类实现某个接口或方法,请改写model包下的具体类,该类只会生成一次,注意千万不要修改original包下抽象中的内容

ii. 如果您要对表现层的配置文件做修改,以xwork-test.xml为例,操作应该是1)新建一个xwork-test-customer.xml配置文件,2)将您要修改或要增加的actoin写在该文件中(即使action名与xwork-test.xml只的action名重复也没有关系,系统会以您的action为***优先级),3)在xwork.xml文件中引入该配置文件注意一定要放在xwork-customer.xml引用的下面。只有这样复名的action才会优先调用您的配置

iii. 如果您要对业务层的配置文件做修改,以appContext-text.xml为例,操作应该是1)新建一个appContext-test- customer.xml配置文件,2)在该文件中加入您自己的配置信息。注意新建的文件名必须以appContext开头。

iv. 如果您要对权限配置文件做修改,以test-security.properties为例,操作应该是1)新建一个test-customer- security.properties配置文件,2)在该文件中加入您的配置信息。注意新建的文件名必须以-security结尾。***如果您想删除生成的配置文件中某些配置项(即对某些url或方法不要求做权限控制),推荐在整个项目做完后统一处理。

感谢各位的阅读!关于“J-Hi的生成器有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

J-Hi的生成器有什么用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

J-Hi的生成器有什么用

这篇文章给大家分享的是有关J-Hi的生成器有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。数据库相关对应不同的数据库J-Hi会生成不同的数据库脚本文件,生成的文件会临时存放在web/db目录下的相关数据库(
2023-06-17

J-Hi查询过滤器的实现原理是什么

本篇文章给大家分享的是有关J-Hi查询过滤器的实现原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。J-Hi设计自己的查询过滤器而没有直接采用Hibernate的Crit
2023-06-17

JavaScript 中的生成器有什么用?

今天我们要讲的是JavaScript中一个不太常用的Generator语法。我很少看到有人在实际项目开发中使用它。

一日一技:生成器里面的 return 有什么用?

return 在生成器中,表示生成器运行完成了,可以结束了。然后生成器会抛出一个StopIteration的异常。而for循环能够检测到这个异常,于是结束循环。

python生成器函数有什么特点

今天就跟大家聊聊有关python生成器函数有什么特点,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;
2023-06-14

python迭代器和生成器有什么区别

Python中,迭代器和生成器是两种不同的对象。它们的区别如下:1. 迭代器是一个实现了迭代协议的对象,它可以使用`iter()`和`next()`方法来遍历数据集合。迭代器可以记住遍历的位置,因此可以在需要时暂停和继续遍历。而生成器是一种
2023-09-20

python迭代器和生成器的作用是什么

这篇文章主要讲解了“python迭代器和生成器的作用是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python迭代器和生成器的作用是什么”吧!说明1、容器是可迭代对象,可迭代对象调用i
2023-06-20

PMK数据生成工具airolib-ng有什么用

这篇文章主要介绍了PMK数据生成工具airolib-ng有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PMK数据生成工具airolib-ngPMK(Pairwise
2023-06-04

复杂密码生成工具apg有什么用

这篇文章主要为大家展示了“复杂密码生成工具apg有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“复杂密码生成工具apg有什么用”这篇文章吧。复杂密码生成工具apg密码是身份认证的重要方式。
2023-06-04

Python中的生成器原理是什么

这篇文章主要介绍“Python中的生成器原理是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中的生成器原理是什么”文章能帮助大家解决问题。什么是python生成器生成器是一种特殊的迭
2023-07-06

python中生成器的原理是什么

这篇文章将为大家详细讲解有关python中生成器的原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,
2023-06-14

学生要云服务器有什么用

学生使用云服务器的用途云服务器提供虚拟资源,为学生提供远程访问、存储和计算能力。以下是一些学生使用云服务器的主要用途:虚拟实验室:访问昂贵的软件和工具协作项目:云端共享文件和数据云储存:安全地存储和访问数据代码托管和开发:协同开发、编译和测试在线课程和远程学习云游戏:无需昂贵的硬件即可玩游戏个人网站:展示作品集或简历数据分析:处理和分析大数据集VPN连接:保护隐私和访问受限内容选择合适的云服务提供商,并注意资源管理、数据备份和网络安全。
学生要云服务器有什么用
2024-04-13

学生要云服务器有什么用

学生使用云服务器可以有以下几个用途:1. 学习和练习:云服务器可以为学生提供一个安全的环境来学习和练习各种计算机技术,如网络管理、虚拟化技术、数据库管理等。学生可以在云服务器上搭建各种学习环境,进行实验和练习,提高自己的技术能力。2. 数据
2023-08-18

学生买云服务器有什么用

学生购买云服务器可以提高学习和研究的效率,因为云服务器可以提供高性能、高可用性和可靠性保证,使学生能够专注于学习和研究。此外,云服务器提供的可扩展性和弹性也可以让学生轻松地添加更多服务器,从而提高他们的资源利用率。云服务器还可以提高学生的学习体验和质量,因为他们可以随时随地使用自己的电脑来进行学习、研究和工作。学生可以通过云服务器的可用性和安全性来保障他们的隐私和数据安全,以及避免因网络攻击和病毒入侵等...
2023-10-27

Java 中生成 hash 值的方法有哪些?(java生成hash值的方法是什么)

在Java编程中,生成hash值是一个常见的需求,它在数据存储、加密、哈希表等领域都有广泛的应用。本文将介绍Java中生成hash值的几种常见方法。一、hashCode()方法
Java 中生成 hash 值的方法有哪些?(java生成hash值的方法是什么)
Java2024-12-17

学生买云服务器有什么用处

节省开支:如果你是一个学生,可以通过云服务器比传统的购买物理服务器更加节省开支。相较于购买传统的服务器,云服务器提供商提供的价格更加优惠,同时也更加灵活。快速部署:如果你正在寻找一种快速部署应用程序的方式,云服务器可以满足你的需求。你只需要租用一个云服务器,就可以快速地构建、测试和上线你的应用程序。可扩展性:由于云服务器可以按需扩展,你可以根据需要增加或减少计算资源,从而满足应用程序的增长需求。高...
2023-10-27

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录