構建應用程式時生成一個數據庫模
這個場景很簡單--您希望在構建應用程式時生成一個數據庫模式建立指令碼(然後在目標資料庫上執行指令碼)--這在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 > <!-- this is process-classes in our case currently -->
< 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客戶端軟體數量的增加嗎?讓我們看看。