Hibernate中利用配置文件(hbm)自动生成数据库表
自动通过hbm文件自动建立数据库表 。以类为基础,生成配置文件和数据库表,更加符合OO。
上一篇文章自动生成了Position.hbm.xml和Users.hbm.xml两个配置文件,将其加入hibernate.cfg.xml中,然后建立HibernateSchemaExport类,代码如下:
Java代码
1. package test;
2.
3. import java.io.File;
4.
5. import org.hibernate.HibernateException;
6. import org.hibernate.Session;
7. import org.hibernate.SessionFactory;
8. import org.hibernate.Transaction;
9. import org.hibernate.cfg.Configuration;
10. import org.hibernate.tool.hbm2ddl.SchemaExport;
11.
12. public class HibernateSchemaExport ...{
13.
14. static Session session;
15.
16. static Configuration config = null;
17. static Transaction tx = null;
18.
19. public static void main(String[] args) ...{
20. /** *//**
21. * 根据映射文件创建数据库结构
22. */
23. try ...{
24. config = new Configuration().configure(new File(
25. "src/hibernate.cfg.xml"));
26.
27. System.out.println("Creating tables...");
28.
29. SessionFactory sessionFactory = config.buildSessionFactory();
30. session = sessionFactory.openSession();
31. tx = session.beginTransaction();
32.
33. SchemaExport schemaExport = new SchemaExport(config);
34. schemaExport.create(true, true);
35.
36. System.out.println("Table created.");
37.
38. tx.commit();
39.
40. } catch (HibernateException e) ...{
41. e.printStackTrace();
42. try ...{
43. tx.rollback();
44. } catch (HibernateException e1) ...{
45. e1.printStackTrace();
46. }
47. } finally ...{
48.
49. }
50. }
51.
52. }
package test;
import java.io.File;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class HibernateSchemaExport ...{
static Session session;
static Configuration config = null;
static Transaction tx = null;
public static void main(String[] args) ...{
/** *//**
* 根据映射文件创建数据库结构
*/
try ...{
config = new Configuration().configure(new File(
"src/hibernate.cfg.xml"));
System.out.println("Creating tables...");
SessionFactory sessionFactory = config.buildSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
SchemaExport schemaExport = new SchemaExport(config);
schemaExport.create(true, true);
System.out.println("Table created.");
tx.commit();
} catch (HibernateException e) ...{
e.printStackTrace();
try ...{
tx.rollback();
} catch (HibernateException e1) ...{
e1.printStackTrace();
}
} finally ...{
}
}
}
运行,出现如下输出:
Sql代码
1. Creating tables...
2. alter table test_user_position drop foreign key FKF1F5A2301D5E879B
3. alter table test_user_position drop foreign key FKF1F5A2307D008B16
4. drop table if exists test_position
5. drop table if exists test_user_position
6. drop table if exists test_uses
7. create table test_position (
8. id integer not null auto_increment,
9. name integer,
10. primary key (id)
11. )
12. create table test_user_position (
13. position_id integer not null,
14. user_id integer not null,
15. primary key (user_id, position_id)
16. )
17. create table test_uses (
18. id integer not null auto_increment,
19. name varchar(25),
20. primary key (id)
21. )
22. alter table test_user_position
23. add index FKF1F5A2301D5E879B (user_id),
24. add constraint FKF1F5A2301D5E879B
25. foreign key (user_id)
26. references test_uses (id)
27. alter table test_user_position
28. add index FKF1F5A2307D008B16 (position_id),
29. add constraint FKF1F5A2307D008B16
30. foreign key (position_id)
31. references test_position (id)
32. Table created.
Creating tables...
alter table test_user_position drop foreign key FKF1F5A2301D5E879B
alter table test_user_position drop foreign key FKF1F5A2307D008B16
drop table if exists test_position
drop table if exists test_user_position
drop table if exists test_uses
create table test_position (
id integer not null auto_increment,
name integer,
primary key (id)
)
create table test_user_position (
position_id integer not null,
user_id integer not null,
primary key (user_id, position_id)
)
create table test_uses (
id integer not null auto_increment,
name varchar(25),
primary key (id)
)
alter table test_user_position
add index FKF1F5A2301D5E879B (user_id),
add constraint FKF1F5A2301D5E879B
foreign key (user_id)
references test_uses (id)
alter table test_user_position
add index FKF1F5A2307D008B16 (position_id),
add constraint FKF1F5A2307D008B16
foreign key (position_id)
references test_position (id)
Table created.
现在看看数据库,已经成功地创建了test_position、 test_uses和 test_user_position 三张表。
hibenate.hbm2ddl.auto属性详解
hibernate 配置属性中,hibernate.hbm2ddl.auto可以帮助你实现正向工程,即由java代码生成数据库脚本,进而生成具体的表结构.
&在hibernate.cfg.xml中:
Java代码 复制代码
1. <property name="hibernate.hbm2ddl.auto">
2. </property>
<property name="hibernate.hbm2ddl.auto">
</property>
它包含4个属性:
* create : 会根据你的model类来生成表,但是每次运行都会删除上一次的表,重新生成表,哪怕2次没有任何改变
* create-drop : 根据model类生成表,但是sessionFactory一关闭,表就自动删除
* update : 最常用的属性,也根据model类生成表,即使表结构改变了,表中的行仍然存在,不会删除以前的行
* validate : 只会和数据库中的表进行比较,不会创建新表,但是会插入新值
在hibernate中,如果在hibernate.cfg.xml文件中,将hibernate.hbm2ddl.auto设置为update(或者cretae-drop)也可以,如下
<property name="hibernate.hbm2ddl.auto">update</property>
则在运行应用程序时(第一次),会自动建立起表的结构(前提是先建立好数据库)。要注意的是,
当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会
如果是spring配置文件中配置则为
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
<prop key="hibernate.connection.autocommit">true</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
分享到:
相关推荐
标题中的“从hbm的xml文件自动生成数据库表”指的是在Java编程中,使用Hibernate框架的一个功能,通过Hibernate Mapping(hbm.xml)文件来自动创建对应的数据库表结构。Hibernate是流行的Java ORM(对象关系映射)...
综上所述,Hibernate自动生成数据库文件涉及到ORM设计、Hibernate Tools的使用、配置文件的编写、Java注解的理解以及数据库操作的最佳实践等多个方面。掌握这些知识点有助于高效地利用Hibernate进行数据库开发。
本压缩包“根据hibernate配置文件生成数据库.zip”包含了一些关键资源,帮助开发者理解如何使用Hibernate工具hbm2ddl自动生成数据库结构。以下是对这些资源的详细解释: 1. **使用Hibernate的工具hbm2ddl根据你的...
以题目中提到的`CampusPO.hbm.xml`为例,我们可以看到其中定义了一个名为`CampusPO`的实体类,它映射到数据库中的`T_XQ`表。XML映射文件中,`<id>`标签定义了主键,`<property>`标签用于映射普通字段,而`<bag>`标签...
本文将深入探讨如何利用Hibernate的映射文件来生成数据库,以此提高开发效率并减少手动创建数据库表的工作量。 一、Hibernate映射文件概述 Hibernate映射文件,通常以`.hbm.xml`为扩展名,是Hibernate用来定义Java...
此时,MyEclipse将自动为所选表生成对应的Hibernate配置文件,包括实体类映射文件(`.hbm.xml`)以及核心的`hibernate.cfg.xml`文件。 #### 三、自动生成配置文件的优势 1. **节省时间**:自动化的配置生成大大...
本篇将详细讲解如何通过Hibernate配置文件自动生成数据库表,以及相关的知识点。 **一、Hibernate概述** Hibernate是Java平台上的一个开源框架,它的主要功能是提供一种映射机制,将Java类与数据库表进行对应,...
本教程将深入讲解如何根据数据库表自动生成实体类、Hibernate配置文件以及实体映射文件。 首先,我们需要了解Hibernate的基本概念。Hibernate提供了一个在Java应用中使用的持久化模型,它允许开发者用面向对象的...
标题中的“利用Middlegen Hibernate3生成hbm.xml配置和java类”指的是使用Middlegen工具来自动化创建Hibernate3框架所需的映射文件(hbm.xml)和对应的Java实体类。这个过程是数据库对象到Java对象(O/R Mapping)的...
Hibernate 反向工程是指使用 Hibernate 工具将数据库表结构反向生成对应的 Entity 类和 hbm.xml 文件的过程。这种方法可以大大简化开发过程,提高开发效率。 二、 Hibernate 反向工程的步骤 1. 切换到 MyEclipse ...
Middlegen是一款强大的Java持久层开发工具,它主要用于将数据库中的表结构自动转换为Hibernate的映射文件(Hbm文件)。这款插件极大地简化了Java开发者在处理数据持久化时的工作,通过自动化的方式生成必要的代码,...
本篇文章将详细介绍如何利用Hibernate中的`SchemaExport`工具来自动生成数据库表,以此来简化数据库设计过程,提高开发效率。 首先,我们需要了解Hibernate的逆向工程(Reverse Engineering)。在传统的开发流程中...
【描述】虽然描述为空,但我们可以推测,这篇博文可能讲述了如何利用某些工具或方法自动化生成Hibernate的映射文件,从而提高开发效率并减少错误。 【标签】:“源码”和“工具”表明这篇内容可能涉及到具体的代码...
Hibernate的逆向工程工具,也被称为Hibernate Tools,能够从现有的数据库结构自动生成对应的Java持久化类(Entity)、Hibernate配置文件(hibernate.cfg.xml)以及映射文件(.hbm.xml)。这样,开发者可以快速地...
MyEclipse中自动生成Hibernate的POJO、DAO和hbm.xml文件 MyEclipse是一款功能强大且流行的集成开发环境(IDE),它提供了许多实用的功能来帮助开发者快速构建和维护项目。其中,MyEclipse提供了对Hibernate的支持,...
`Hibernate-tools`提供了一种方式来自动生成与数据库表对应的实体类,这大大减少了手动编写代码的工作量。在5.2.1版本中,我们可以在配置文件中指定注释模板,使得生成的实体类带有详细的注释。例如,你可以定义一...
除了`hibernate.cfg.xml`,还需要创建一个名为`hibernate.reveng.xml`的文件,这是Hibernate反向工程配置文件。在这个文件中,你可以指定哪些数据库表需要被映射为Java类,以及这些类的命名规则。例如,你可以设置...
在提供的"WebRoot/info"文件夹中的"Hibernate反向生成数据库表.doc"文档,应该详细介绍了以上操作流程,建议仔细阅读以掌握具体步骤。如果你在使用过程中遇到任何问题,可以参考Hibernate的官方文档或在线社区寻求...
在本教程中,我们将探讨如何利用Hibernate的注解功能,通过实体类自动生成数据库中的表。这极大地简化了数据库建模过程,同时也减少了手动编写SQL语句的工作量。 首先,我们需要理解Hibernate的核心概念。ORM框架如...