构建应用程序时生成一个数据库模
这个场景很简单--您希望在构建应用程序时生成一个数据库模式创建脚本(然后在目标数据库上执行脚本)--这在Hibernate 3中相对容易 4不兼容,当然,对于每一个新项目,您都应该从Hibernate 4开始。那该怎么办呢?这是相对简单的,但需要一些时间来研究和测试。其思想是使用Schemaexport工具。但这有点棘手,因为它只支持原生Hibernate配置,而不支持JPA。
首先,创建一个处理导出的命令行应用程序.请注意,Ejb3Configuration是不推荐使用的,但它不推荐用于外部使用-Hibernate在内部大量使用它。因此,这是一个正常的工人阶级:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
@SuppressWarnings ( "deprecation" )
public class JpaSchemaExport {
public static void main(String[] args) throws IOException {
execute(args[ 0 ], args[ 1 ], Boolean.parseBoolean(args[ 2 ]), Boolean.parseBoolean(args[ 3 ]));
}
public static void execute(String persistenceUnitName, String destination, boolean create, boolean format) {
System.out.println( "Starting schema export" );
Ejb3Configuration cfg = new Ejb3Configuration().configure(persistenceUnitName, new Properties());
Configuration hbmcfg = cfg.getHibernateConfiguration();
SchemaExport schemaExport = new SchemaExport(hbmcfg);
schemaExport.setOutputFile(destination);
schemaExport.setFormat(format);
schemaExport.execute( true , false , false , create);
System.out.println( "Schema exported to " + destination);
}
}
|
请注意,我们没有将文件直接部署到目标数据库。(.Execute的第二个参数为false)。这是因为我们没有我们的数据库连接属性--它们是外部的。稍后将在maven构建中完成模式文件的部署,但这超出了本文的范围。
https://movie.douban.com/review/13978692/
然后,我们必须从maven构建中调用这个类。我最初尝试将其创建为一个ant任务,并使用antrun插件运行它,但它存在类路径和类加载器问题(找不到实体和持久化的xml)。这就是为什么我使用exec-maven-plugin,它在构建运行时在同一个JVM中调用应用程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
< plugin >
< groupId >org.codehaus.mojo groupId >
< artifactId >exec-maven-plugin artifactId >
< version >1.1 version >
< executions >
< execution >
< phase >${sql.generation.phase} phase >
< goals >
< goal >java goal >
goals >
execution >
executions >
< configuration >
< mainClass >com.yourcompany.util.JpaSchemaExport mainClass >
< arguments >
< argument >core argument >
< argument >${project.build.directory}/classes/schema.sql argument >
< argument >true argument >
< argument >true argument >
arguments >
configuration >
plugin >
|
然后,您可以使将schema.sql文件部署到目标数据库(您需要由maven加载外部化的db属性,这是由properties-maven-plugin完成的)。
https://movie.douban.com/review/13979173/
然而,对于许多小企业来说,使用其他地方的服务仍然是一种不便(更多的是心理上的)。“他们有我的资料!”这些人无法在本地安装和管理运行小型软件所需的整个堆栈。另一方面,编写桌面软件很乏味(尤其是在Java中)。人们想要建造酷万维网应用程序,因为创新就是在那里发生的。在过去的十年里,所有的桌面应用程序都是操作系统中最时髦的默认主题。
幸运的是,网络前沿的创新已经允许我们将桌面应用程序构建为网页。听起来很奇怪,我知道,但我已经看到了一些工具(主要是监视和开发工具,但这只是一个开始),它们纯粹是HTML 5和javascript,并在浏览器中运行。因此,人们可以下载一个html文件并双击它,而不是安装一个exe文件(“我发誓,没有病毒,由3家你从未听说过的公司检查过,它也可能会更改您的注册表,但不要担心”)。它将在浏览器中打开,这是他们所熟悉的。它将完成常规应用程序所能做的一切。此外,这种类型的软件也可以用作一些只提供API的无UI服务的客户端。
我说的不是操作系统实用程序,也不是低级的东西--仅仅是个人理财、小型企业库存、笔记本等的应用程序。任何通常使用小型嵌入式数据库和几个带有按钮和网格的屏幕运行的应用程序,现在都可以用javascript轻松编写。哦,而且它将是独立于平台的。
我们会看到html客户端软件数量的增加吗?让我们看看。