本文作者:苏生米沿
本文地址:http://blog.csdn.net/sushengmiyan/article/details/50445936
你能够将例如以下三种类型的脚本绑定到hibernate的schema生成程序中:
1.当schema生成的时候。创建脚本create就会运行。
一个自己定义的创建脚本能够在hibernate自己主动生成脚本之前,之后,甚至能够直接替换。换句话说,你能够写一个SQL脚本,这个脚本从你的映射元数据中在hibernate生成表、约束之前或之后运行。
2.Drop语句,在hibernate移除schema的时候运行。像create脚本一样,drop语句能够在自己主动生成之前之后或者直接替换hibernate的自己主动生成语句。
3.Load语句,总是在hibernate生成schema之后才去运行。作为生成的最后一步。它的主要目的就是导入你的程序运行之前的測试或者主数据。它能够包含不论什么形式的SQL语句,包含想alter这种DDL语句,假设你想进一步优化自己定义你的schema的话。
这个自己定义已经是其实的标准了,你能够使用JPA的persistence.xml来配置这个持久化单元属性。
①.默认情况下,hibernate期望一个SQL语句占一行。启用多行语句就靠第一个转换了。你能够实现自己的org.hibernate.tool.hbm2ddl.ImportSqlCommondExtractor 假设你想要依据你自己的不同的方式来处理SQL脚本的话。
②.这个属性定义了何时你创建或者销毁脚本会被调用。你自己定义的脚本将会包含CREATE DOMAN语句,它必需要在表创建使用这些DOMAIN的之前被创建。有了这些设置。schema生成器就在ORM元数据读取之前运行这个创建语句。
Drop语句就是在hibernatedrop表的时候给你了一个清楚你创建的数据的机会。
③.这是SQL脚本的位置。路径是从classpath開始算的。
④.这是drop语句的位置所在。
⑤.这个脚本在表创建之后运行。
我们提及过,DDL是跟产品特性挂钩的,假设你的产品支持多种数据源,你就需要设置各种的方言。你能够通过多个持久化单元的方式来解决问题。