`
stenlylee
  • 浏览: 261624 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Hibernate's hbm2ddl tool

阅读更多

格式:<prop key="hibernate.hbm2ddl.auto">update</prop>

## 自动schema输出
#hibernate.hbm2ddl.auto create-drop
#hibernate.hbm2ddl.auto create
#hibernate.hbm2ddl.auto update

create

Hibernate will create the database when the entity manager factory is created (actually when Hibernate's SessionFactory is created by the entity manager factory). If a file named import.sql exists in the root of the class path ('/import.sql') Hibernate will execute the SQL statements read from the file after the creation of the database schema. It is important to remember that before Hibernate creates the schema it empties it (delete all tables, constraints, or any other database object that is going to be created in the process of building the schema).

Hibernate将会在entity manager factory创建的时候建立数据库(实际上是在Hibernate的SessionFactory被entity manager factory创建的时候执行)。如果在class path中存在名为import.sql的文件(/import.sql),Hibernate将会在数据库架构创建之后读取sql文件中的SQL语句并执行。需要特别注意的是,在Hibernate创建爱你数据库结构之前,先要清空数据库(也就是删除所有的表、约束和所有其他的数据库对象之后再重新建立数据库结构)。

create-drop

Same as 'create' but when the entity manager factory (which holds the SessionFactory) is explicitly closed the schema will be dropped.

和"create”属性一样,不过在entity manager factory(用于管理SessionFactory的)被确认关闭后,schema将会被删除。

update

Hibernate creates an update script trying to update the database structure to the current mapping. Does not read and invoke the SQL statements from import.sql. Useful, but we have to be careful, not all of the updates can be done performed ? for example adding a not null column to a table with existing data.

Hibernate建立更新脚本,并尝试更新数据库结构到当前的映射中。不会从import.sql中读取并调用SQL语句。虽然会需要存在这种功能,但是我们必须十分小心,不是所有的更新都会被执行。例如向一个已经存在数据的表中添加一个不为空的字段。

validate

Validates the existing schema with the current entities configuration. When using this mode Hibernate will not do any changes to the schema and will not use the import.sql file.

通过当前的entities配置验证已经存在的schema。使用这种模式的时候,Hibernate将不会对schema做任何事情,并且不会用到import.sql文件。

模式

读取import.sql

更改数据库结构

注释

update

No

Yes

 

create

Yes

Yes

在创建之前必须先清空数据库

create-drop

Yes

Yes

当SessionFactory关闭以后删除数据库

validate

No

No

设hibernate.hbm2ddl.auto为create-drop/create后,在classpath中扔一个/import.sql进去,hibernate启动时就会执行import.sql的内容。设置为update时不执行import.sql.

http://www.jroller.com/eyallupu/entry/hibernate_s_hbm2ddl_tool

使用Maven生成DDL脚本(Generating DDL Scripts with Maven)
http://unmaintainable.wordpress.com/2007/06/30/generating-ddl-scripts-with-maven/

分享到:
评论

相关推荐

    ssh项目中hbm2dll和hbm2java的使用

    在这个例子中,`hibernatetool`任务被用来调用`hbm2java`,并将生成的Java文件放入`build.dir`目录下。类似的,`hbm2ddl`任务可以用于生成数据库脚本。 使用SSH项目时,理解并正确配置`hbm2dll`和`hbm2java`能显著...

    Hibernate Tool 使用文档

    Hibernate Tools支持多种类型的导出器,如用于生成数据库模式的`hbm2ddl`、用于生成Java源码的`hbm2java`等。 #### 三、Eclipse Plugins - **Introduction**:Eclipse插件为开发者提供了一个图形化的界面来管理...

    Hibernate动态建表

    这涉及到`org.hibernate.tool.hbm2ddl.SchemaExport`类,它负责处理`hibernate.hbm2ddl.auto`的各个选项,并调用数据库方言(Dialect)来生成符合特定数据库语法的SQL。 **工具支持** 对于大型项目,除了直接在代码...

    hibernate tool 非eclipse插件方式运行

    6. **其他功能**:除了生成Java类,Hibernate Tool还可以生成数据库表的DDL(Data Definition Language)脚本,反向工程数据库结构到HBM文件,甚至可以生成基于JPA的实体类。 7. **依赖管理**:在非IDE环境下,需要...

    根据映射文件生成实体类和ddl

    &lt;taskdef name="hbm2ddl" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="all-in-one.path"/&gt; &lt;hbm2ddl destdir="${schema.dir}"&gt; ${configuration-files.dir}/hibernate-access-generic....

    Ant打包 Hibernate配置 实例

    在这个例子中,`hibernatetool`任务会读取源代码目录下的所有`.hbm.xml`文件,根据它们生成对应的SQL脚本(schema.sql),并写入到指定的目录。 在实际开发中,Ant和Hibernate的结合使用可以大大提高项目的开发效率...

    从hbm的xml文件 自动生成数据库表

    3. **使用Hibernate工具**: Hibernate提供了SchemaExport或HibernateTool工具,可以读取hbm.xml文件并生成相应的DDL语句。例如,`SchemaExport.create(true, true)`将执行CREATE命令,而`SchemaExport.drop(true, ...

    利用hibernate中的SchemaExport生成数据表

    java org.hibernate.tool.hbm2ddl.SchemaExport -drop -create -configuration /path/to/hibernate.cfg.xml -classpath /path/to/classes ``` 这条命令会先删除已存在的表(如果使用`-drop`选项),然后根据配置...

    hibernate动态数据库进化版

    这可以通过解析数据库元数据来实现,比如使用`org.hibernate.tool.hbm2ddl.SchemaExport`工具生成HBM文件,然后反向工程生成Java实体。 4. **Criteria API和HQL的动态构建**:这些API允许在运行时根据条件动态构造...

    Hibernate3 学习笔记.ppt

    Hibernate Tool是一组工具,包括了反向工程(Reverse Engineering)可以自动生成Java实体类和映射文件,以及HBM2DDL自动创建数据库结构等功能,帮助开发者快速搭建项目基础。 总结,Hibernate3作为强大的O/R ...

    hibernate反向生成数据库表.doc

    import org.hibernate.tool.hbm2ddl.SchemaExport; public class HibernateUtil { public static void generateSchema() { Configuration cfg = new Configuration().configure(); new SchemaExport(cfg).create...

    Hibernate配置

    &lt;property name="hbm2ddl.auto"&gt;update &lt;!-- 事务管理器 --&gt; &lt;property name="transaction.factory_class"&gt;org.hibernate.transaction.JDBCTransactionFactory &lt;/hibernate-configuration&gt; ``` **2. 映射文件...

    用Hibernate3.1实现XML和数据库的同步

    6. **SchemaExport工具**:`org.hibernate.tool.hbm2ddl.SchemaExport`工具可用于根据`.hbm.xml`文件自动生成数据库表结构,简化了数据库初始化和维护工作。 #### 实践步骤详解 - **环境搭建**:首先,需确保已...

    spring mvc + spring data jpa + redis + shiro 集成

    spring mvc + spring data jpa + redis + shiro 集成加应用 ...另外,将applicationContenxt.xml 中 &lt;prop key="hibernate.hbm2ddl.auto"&gt;update&lt;/prop&gt; update 改成create 可直接创建表,直接运行!

    配置hibernate

    import org.hibernate.tool.hbm2ddl.SchemaExport; public class StuTest { public static void main(String args[]){ Configuration cfg = new Configuration().configure(); SchemaExport sExport = new ...

    Myeclipse开发hibernate

    &lt;servlet-class&gt;org.hibernate.tool.hbm2ddl.SchemaExport &lt;param-name&gt;configuration &lt;param-value&gt;/WEB-INF/hibernate.cfg.xml &lt;param-name&gt;execute &lt;param-value&gt;true &lt;load-on-startup&gt;1 ``` ...

    log4j所需全部文件

    本来想在csdn下的,结果一看全都需要积分。已经在开源网站下齐了...可以找到语句:log4j.logger.org.hibernate.tool.hbm2ddl=debug ,这就是用来显示DDL语句的配置,还有其他配置用来显示其他信息,不要的话可以注释掉

    hibernate工具参考指南(英文版)

    - **Hibernate映射文件导出器**:介绍了如何使用`&lt;hbm2hb&gt;`任务来生成Hibernate映射文件。 综上所述,这份“hibernate工具参考指南”详细介绍了如何在Eclipse IDE中使用Hibernate工具进行开发,涵盖了从下载安装到...

    Hibernate开发向导

    - **运行SchemaExport工具**:执行`org.hibernate.tool.hbm2ddl.SchemaExport`类,创建或更新数据库表结构。 #### 二、事务与并发控制 - **事务定义**:事务是一组操作的集合,在这些操作完成后要么全部成功提交...

    envers中文文档(部分)

    - **DDL生成**:如果使用 `hibernate.hbm2ddl.auto` 配置项,Envers会在启动时自动创建所需的审计表。也可以使用 `org.hibernate.tool.EnversSchemaGenerator` 或者 Ant 任务来自定义生成 DDL 语句。 ##### 2.3 ...

Global site tag (gtag.js) - Google Analytics