- 浏览: 7339271 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
一般在项目开发过程中,使用比较多的就是先建好表,再利用hibernate反向工程生成*.hbm.xml文件跟POJO类,个人认为由于目前所使用的数据库都是关系数据库,而hibernate作为一个ORM,把对数据库的操作都对象化了,更应当从对象出发,生成数据库里面相关表,这样更加符合人认知事物的习惯。
由于hibernate3提供了自带的工具hbm2ddl,建立根据你的对象建立数据库是一件非常简单的事情。
SchemaExport工具:Hibernate的hbm2dll提供SchemaExport工具,给定一个连接字符串和映射文件,不需输入其他东西就可以按照持久化类和映射文件自动生成数据库架构,现在SchemaExport工具还不是很强大,但是一般应用足够了,它还是一个相当原始的API还在不断改进。SchemaExport工具就是把DDL脚本输出到标准输出,同时/或者执行DDL语句。SchemaExport工具提供了三个方法,分别是Drop()、Create()、Execute(),前两个方法实质是调用Execute()方法。通常使用Execute()方法来生成数据库架构的。
SchemaUpdate工具:在Hibernate2.0中新添加SchemaUpdate工具,可以用来更新数据库架构。但是我觉得没有什么作用,因为它不能Drop现有的表或列,也不能更新现有的列,只能添加新的表和列。如果我需要删除表或者列或者修改其中列,SchemaUpdate工具就显得无能为力了。
SchemaValidator工具:SchemaValidator工具,可以用来检查数据库架构。通过映射文件中配置的相关数据库表及各自的字段属性来检查数据库中对应表结构是否存在或正确,如果不存在表或字段不一致,则抛出异常。
对于单纯的Hibernate,配置有hibernate.cfg.xml数据库配置文件,或是其它SSH整合版本中也配置有相关.cfg.xml文件的工程来说,这种类型的情况下使用Hibernate的SchemaExport实现正向工程比较简单。如下例:
public boolean createTableByBean(String mappingFile) {
Configuration cfg = new Configuration().configure(cfgFile);
cfg.addFile(mappingFile);
boolean flag = true;
SchemaExport dbExport = new SchemaExport(cfg);
try {
dbExport.create(true, true);
} catch (Exception e) {
flag = false;
}
return flag;
}
而我所做的数据迁移工具中使用的是Spring+Hibernate整合框架,而且在数据库配置中没有使用hibernate.properties和hibernate.cfg.xml文件来配置,
因为在使用Hibernate的SchemaExport/SchemaUpdate/SchemaValidator工具时,构建对象时需要Hibernate的Configuration对象实例作为参数。如:
var export = new SchemaExport(cfg); 其中cfg参数由
Configuration cfg = new Configuration().configure(cfgFile);建立,configure默认读取hibernate.cfg.xml配置文件(configure无参函数),
也可以通过传递参数指定自己定义的.cfg.xml文件。我的SessionFactory是借助于Spring提供的
org.springframework.orm.hibernate3.LocalSessionFactoryBean来实现的:
<bean id="targetSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
……
</bean>
在没有配置.cfg.xml文件的情况下,可以通过配置的数据源的SessionFactory中获取,如下:
public class DaoUtil extends HibernateDaoSupport {
private Configuration cfg;
private Settings settings;
public void init() {
String webRootPath = CommonMethod.getWebRootPath();
ApplicationContext dataSource_ctx = new FileSystemXmlApplicationContext(webRootPath + "/WEB-INF/datatransferConf/applicationContext-targetDataSource.xml");
SessionFactoryImplementor sessionFactoryImpl = (SessionFactoryImplementor) dataSource_ctx.getBean("targetSessionFactory");
LocalSessionFactoryBean localSessionFactory = (LocalSessionFactoryBean) dataSource_ctx.getBean("&targetSessionFactory");
SessionFactory sessionFactory = (SessionFactory) dataSource_ctx.getBean("targetSessionFactory");
this.cfg = localSessionFactory.getConfiguration();
this.settings = sessionFactoryImpl.getSettings();
super.setSessionFactory(sessionFactory);
}
public void createTableFromCfg() {
if (settings.isAutoCreateSchema()) {
new SchemaExport(cfg, settings).create(true, true);
} else if (settings.isAutoUpdateSchema()) {
new SchemaUpdate(cfg, settings).execute(true, true);
} else if (settings.isAutoDropSchema()) {
new SchemaExport(cfg, settings).drop(true, true);
} else if (settings.isAutoValidateSchema()) {
new SchemaValidator(cfg).validate();
}
}
public void createTableFromMapFile(String mappingFile) {
Resource mappingLocation = new ClassPathResource(mappingFile);
try {
cfg.addInputStream(mappingLocation.getInputStream());
} catch (MappingException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
createTableFromCfg();
}
}
SchemaExport 的create(script,export)方法根据持久类和映射文件先删除架构后创建删除数据库架构。有两个参数,第一个为True就是把DDL语句输出到控制台,第二个为True就是根据持久类和映射文件先执行删除再执行创建操作,经过调试可以发现这个方法其实质是执行execute(script,export, false, true)方法。execute(script, export, justDrop, format)方法根据持久类和映射文件先删除架构后创建删除数据库架构。有四个参数,第一个为True就是把DDL语句输出到控制台;第二个为True就是根据持久类和映射文件在数据库中先执行删除再执行创建操作;第三个为false表示不是仅仅执行Drop语句还执行创建操作,这个参数的不同就扩展了上面两个方法;第四个参数为false表示不是格式化输出DDL语句到控制台,是在一行输出的。
Spring配置文件中所定义的LocalSessionFactoryBean实现了org.springframework.beans.factory.FactoryBean接口,在使用ApplicationContext对象读取的时候可以自动转型为多种不同类型的SessionFactory,spring在装配的时候, 如果发现实现了org.springframework.beans.factory.FactoryBean接口,就会使用
FactoryBean#getObject() 方法返回的对象装配,具体的可以看下文档。如果你想拿到LocalSessionFactoryBean实例, 在id前面加个'&'就可以了,在你的配置文件中BeanFactory.getBean('&sessionFactory')拿到的就是LocalSessionFactoryBean的实例。
发表评论
-
编程的十四条经验
2013-05-06 10:32 1821排列不分先后: 1. 当 ... -
整合Struts2+JasperReport Web报表应用示例
2013-04-22 13:56 2289整合Struts2+JasperReport Web报表应用 ... -
关于H2使用的那些事
2012-12-14 16:40 27221在项目中采用H2作为工 ... -
Java 分割功能实现
2011-08-25 08:39 2795在项目针对比较大的文件需要文件的分割功能,特意写了一个 ... -
反射工具类
2010-04-25 10:47 2400package easyway.tbs.client.bm.u ... -
项目中Hibernate中Criteria和Query查询和模式引用
2010-02-21 15:52 2455在项目中Hibernate中Criteria和Q ... -
json 在项目中开发一个巧妙地应用
2009-12-12 16:49 3904在项目中需要保存客户的信息到Cookie中,因为客户要求 ... -
项目中使用时间工具类
2009-11-21 16:43 3034项目中使用的时间工具类的主要的采用commons-l ... -
将HTML文件转换为图片应用开发
2009-10-21 11:15 4464项目使用的基 ... -
Spring项目的测试用例
2009-08-22 12:49 2331在项目的开发过程中使用Junit4测试代码,使用 ... -
jBPM与Spring整合浅析
2009-08-22 12:41 26641、创建公文流转相关的实体类,并创建数据库表 2、根据对用 ... -
Hibernate中用户类型(User Type)应用
2009-08-16 09:08 3142在项目中许多地方使用枚举类,枚举对象值对应数据一个常 ... -
关于常用城市控件中数据的处理方案
2009-08-15 19:41 2419在项目中由于多次使用的国家省份城市的控件,以前采 ... -
在Spring2.5注解时必须注意几点
2009-08-15 19:22 2135项目中采用Spring2.5配置重点内容如下: ... -
中文转换拼音的实现思路以及实现
2009-08-15 18:40 2917在项目中一位大师兄写的中文转换拼音代码:自己整理一下 ... -
在项目中一些相关常量数组使用枚举应用
2009-08-15 18:01 2621在项目中采用Hibernate中支持枚举类型因此我们使用许 ... -
在项目开发中关于Hibernate注解的配置的一些说明
2009-08-15 13:26 4349在项目开发中采用Hibernate3注解方式实现关 ... -
关于项目中泛型的应用
2009-08-15 12:38 2398在项目采用JDK1.6采用泛型开发,在开发应用之中减少了大 ... -
针对项目中XML解析的扩展应用
2009-08-15 12:14 2580由于项目中多个需 ...
相关推荐
详解hibernate.hbm2ddl.atuo 属性的配置
- hibernate-tools.jar:这个库包含了hbm2ddl和hbm2java工具以及其他辅助工具,如逆向工程(reverse engineering)等功能。 - jboss-logging.jar:提供日志记录服务,Hibernate使用这个库进行内部的日志输出。 - dom...
`hbm2ddl`(Hibernate to Database Mapping and Data Definition Language)属性是Hibernate配置文件中的一个关键选项,它决定了Hibernate如何处理数据库表结构。通过设置不同的`hbm2ddl`属性值,开发人员可以灵活地...
- 在`hibernate.cfg.xml`配置文件中设置数据库连接信息,并将`hibernate.hbm2ddl.auto`设置为`create`,重启Tomcat即可根据映射文件生成数据库表。 #### 三、逆向工程 逆向工程则是指从已有的数据库表结构出发,...
### Hibernate 正向工程与逆向工程详解 #### 一、Hibernate正向工程 ##### 定义 Hibernate正向工程是指从Java实体类生成数据库表的过程。这种方式更符合Java程序员面向对象的编程思想,也是软件工程设计时常用的...
标题中的“利用Middlegen Hibernate3生成hbm.xml配置和java类”指的是使用Middlegen工具来自动化创建Hibernate3框架所需的映射文件(hbm.xml)和对应的Java实体类。这个过程是数据库对象到Java对象(O/R Mapping)的...
- 选择使用注解的方式进行配置,这通常是在配置文件中的`<property name="hbm2ddl.auto">update</property>`设置,同时在`<mapping>`元素中指定注解的类。 4. **添加MySQL驱动依赖**: - 在项目的类路径中添加...
Hibernate 反向工程是指使用 Hibernate 工具将数据库表结构反向生成对应的 Entity 类和 hbm.xml 文件的过程。这种方法可以大大简化开发过程,提高开发效率。 二、 Hibernate 反向工程的步骤 1. 切换到 MyEclipse ...
首先,我们要关注的关键配置项是`hibernate.hbm2ddl.auto`。这个属性决定了Hibernate在启动时如何处理数据库的元数据,即表结构。以下四个值是它可能的取值: 1. **update**:这是最常用的设置,当设置为`update`时...
**标题:“Hibernate01:概念、正向工程、反向工程”** 在Java开发领域,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑而非繁琐的SQL语句。本文...
本压缩包“根据hibernate配置文件生成数据库.zip”包含了一些关键资源,帮助开发者理解如何使用Hibernate工具hbm2ddl自动生成数据库结构。以下是对这些资源的详细解释: 1. **使用Hibernate的工具hbm2ddl根据你的...
Hibernate,作为一款流行的ORM框架,允许开发者通过正向工程自动生成hbm.xml文件,这是一种描述Java对象与数据库表之间映射关系的XML文件。在本主题中,我们将深入探讨如何利用正向工程创建hbm.xml文件,并了解如何...
《hibernate.hbm.xml详解》 在Java的持久化框架Hibernate中,`hibernate.hbm.xml`文件是至关重要的,它定义了Java对象与数据库表之间的映射关系,使得对象模型能够与关系型数据库无缝对接。这篇文章将深入解析`...
`Hibernate-tools`是Hibernate项目提供的一组实用工具,它包括了代码生成、反编译数据库模式到`hbm.xml`文件、JPA实体类生成等功能。在5.2.1版本中,这个工具集已经相当成熟,可以很好地支持各种定制需求。 1. **...
其中,反向工程(Reverse Engineering)是Hibernate提供的一项功能,它能根据数据库结构自动生成对应的Java实体类、持久化映射文件(hbm.xml)以及数据访问对象(DAO)。本文将围绕"hibernate反向工程模板(已修改)...
2. **逆向工程原理**:Hibernate的反向工程是从现有数据库中提取表结构,并自动生成对应的Java实体类、Hibernate配置文件(hbm.xml)以及映射文件。这些文件包含了数据库表字段与Java对象属性之间的对应关系,以及...
Hibernate常用操作示例,包含详细注释说明,数据库初始化文件。使用和学习请参考:http://blog.csdn.net/daijin888888/article/details/51692942
-- hbm2ddl task (not shown here, but would be similar) --> ``` 在这个例子中,`hibernatetool`任务被用来调用`hbm2java`,并将生成的Java文件放入`build.dir`目录下。类似的,`hbm2ddl`任务可以用于生成数据库...
通过myeclipse自动生成Hibernate类文件和hbm.xml文件,链接数据库库自动生成