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

hbm2dll的使用

    博客分类:
  • SSH
阅读更多

在开发过程中,我们可以先设计数据库,然后由MyEclipse自带的功能生成pojo和hbm。也可以先编写pojo,通过xdoclet来生成hbm,在使用hbm2dll来生成数据库。

由于前一种方法的对前期数据库的设计要求较高,一旦对数据库进行更改,那么对整个系统的修改将是噩梦般的修改。

而后一种方式便是一种必须灵活的设计方式。可是随时对数据库进行必要的修改,整个流程都比较简单清晰。

 

当你使用hbm2dll的时候,你就一定加入了hibernate。该产品是通过hbm文件的内容去产生相应的数据库的。本功能是必须得到hibernat的支持。

第一步:

编写pojo文件。如:

package com.babasport.VO.product;

import org.hibernate.mapping.Column;

/**
 * @hibernate.class 
 * table="babasport"
 * @author sunqitang
 *
 */
public class ProductType {
	private Integer productTypeId;
	private String productTypeName;
	/**
	 * @hibernate.id 
	 * column="productTypeId"
	 * generator-class="native"
	 * @return
	 */
	public Integer getProductTypeId() {
		return productTypeId;
	}

	public void setProductTypeId(Integer productTypeId) {
		this.productTypeId = productTypeId;
	}
	/**
	 * @hibernate.property 
	 * @return
	 */
	public String getProductTypeName() {
		return productTypeName;
	}

	public void setProductTypeName(String productTypeName) {
		this.productTypeName = productTypeName;
	}
	
	
}

参考文章:http://sunqitang.iteye.com/admin/blogs/326893

 

第2部,由xdoclet来产生相应的hbm文件:

 

<?xml version="1.0" encoding="UTF-8"?>
<project name="OA系统构建脚本" default="生成hibernate映射文件" basedir=".">

   	<property name="src.dir" value="${basedir}/src"/>
   	<property name="build.dir" value="${basedir}/bin"/>
	<property name="webapp.dir" value="${basedir}/src/webapp"/>
	<property name="xdoclet.home" value="D:\\JAVA电子资源\\组件\\Xdoclet\\xdoclet-plugins-1.0.3\\xdoclet-plugins-1.0.3"/>

   	<!-- Build classpath -->
   	<path id="xdoclet.task.classpath">
      	<fileset dir="${xdoclet.home}/lib">
         	<include name="**/*.jar"/>
      	</fileset>
      	<fileset dir="${xdoclet.home}/plugins">
         	<include name="**/*.jar"/>
      	</fileset>
   	</path>
	<taskdef 
		name="xdoclet"
		classname="org.xdoclet.ant.XDocletTask"
		classpathref="xdoclet.task.classpath"
	/>
	
	<target name="生成hibernate映射文件">
		<xdoclet>
			<fileset dir="${src.dir}/com/babasport/VO">
				<include name="**/*.java"/>
			</fileset>
			<component 
				classname="org.xdoclet.plugin.hibernate.HibernateMappingPlugin"
				version="3.0"
				destdir="${src.dir}"
			/>
		</xdoclet>
	</target>
</project>

 特别注意产生的hbm文件的版本一定要是3.0版本。

上面的文件由ant来运行。

 

第3部

  在spring的配置文件中加入:

       <prop key="hibernate.hbm2ddl.auto">create</prop>

和对配置文件的支持

       <property name="mappingResources">
            <list>
                <value>com/babasport/VO/product/ProductType.hbm.xml</value>
            </list>
        </property>

    hibernate.hbm2dll.auto的属性由四个:

validate               加载hibernate时,验证创建数据库表结构
create                  每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。
create-drop         加载hibernate时创建,退出是删除表结构
update                加载hibernate自动更新数据库结构

 

特别建议:当对数据库创建或修改完毕后,最好关闭该属性。因为该属性还不是特别问题。经常出现丢失数据表的现象

 

第4部

   对配置文件进行加载。

  数据库便开始进行改动了。

分享到:
评论

相关推荐

    ssh项目中hbm2dll和hbm2java的使用

    当你的项目使用Hibernate作为ORM框架,`hbm2dll`会根据Hibernate的映射文件(.hbm.xml)生成数据库表结构。这包括创建、更新或删除SQL脚本,使你能快速地同步数据库结构与你的模型类。这个功能对于快速开发和数据库...

    NHibernate实例代码 三种hbm.xml加载方式

    在类引用方式中,`hbm.xml` 文件被嵌入到项目的类库(DLL)中。这样,当我们创建实体类时,可以使用`Assembly`类来加载相应的映射文件。例如,`configuration.AddInputStream(typeof(MyEntity).Assembly....

    NHibernate所需的DLL

    2. **ADO.NET依赖**:NHibernate依赖于.NET Framework的ADO.NET组件,如System.Data.SqlClient.dll(用于SQL Server),System.Data.OracleClient.dll(用于Oracle数据库)或其他数据库提供者,以进行数据库交互。...

    NHibernate的一套dll文件

    4. **使用NHibernate**:使用NHibernate通常涉及以下步骤:配置NHibernate,定义对象映射(通常通过XML的hibernate.cfg.xml和.hbm.xml文件,或者使用Fluent NHibernate的代码方式),创建SessionFactory,然后通过...

    NHibernate3.2及Iesi.Collections的dll文件

    4. **映射文件**:使用HBM(Hibernate Mapping)XML文件或注解,定义对象与数据库表之间的映射关系,包括字段映射、主键生成策略、关联关系等。 5. **Session**:NHibernate中的Session接口是与数据库交互的主要...

    hibernateGenerate

    此外,如果你已经有了实体类,你可以使用`hbm2ddl`工具生成数据库表结构,或者使用`hbm2java`从现有数据库模式生成实体类和映射文件。这极大地提高了开发效率,特别是在频繁更改数据库模式时。 总结一下,"Maven ...

    Jersey_Hibernate:带有 Jersey 和 Hibernate 的 Restful webservice

    Jersey_Hibernate 它是 Jersey 和 hibernate 中员工管理的示例应用程序。 带有 Jersey 和 Hibernate 的宁静网络服务。... (c) 如果在您的数据库中创建了表,则首次取消 hbm2dll.auto 属性的注释,然后重新注释它。

    Nhibernate

    2. **映射**:定义实体与数据库表之间的映射,可以使用XML文件(`.hbm.xml`)或Fluent NHibernate的Fluent API。映射应清晰地指定字段、主键、外键、索引等。 3. **会话管理**:Nhibernate使用会话(Session)作为...

    NHibernate-2.1.0.rar

    2. **NHibernate.Linq.dll**:这个库提供了对LINQ(Language Integrated Query)的支持,使开发人员能够使用C#或VB.NET的查询语法操作数据。 3. **文档**:可能包括PDF或HTML格式的用户手册、API参考文档,帮助...

    login 20090512

    例如,`struts.xml`可能包含了Struts 2的动作配置,`spring-security.xml`可能涉及Spring Security的设置,而`hibernate.cfg.xml`和`.hbm.xml`文件则与Hibernate的配置和对象映射有关。此外,还有可能包含`c3p0....

    nhibernate映射类代码生成器

    然而,手动编写每个实体类的映射文件(.hbm.xml)或使用特性注解(.NET 4.0及以后版本)会消耗大量时间。这就是“nhibernate映射类代码生成器”发挥作用的地方。 这个代码生成器的主要目标是自动化创建与数据库表...

    NHibernate-3.0.0

    开发者定义的实体类需要通过映射文件(`.hbm.xml`或使用注解)与数据库表关联。映射文件定义了字段到列的映射,主键生成策略,以及一对一、一对多、多对多等关系映射。 5. **查询API**: NHibernate提供了多种...

    NHibernate配置文件生成器.rar

    2. Npgsql.dll和MySql.Data.dll:这两个是数据库驱动程序,Npgsql是用于连接PostgreSQL数据库的.NET库,而MySql.Data.dll则是连接MySQL数据库的库,说明这个工具支持多种数据库类型。 3. Mono.Security.dll:这是一...

    NHibernate-3.3.2.GA-bin 下载

    4. **使用NHibernate**:在实际开发中,开发者需要理解NHibernate的主要概念,如Session、SessionFactory、Query等,并学会编写映射文件(HBMXML或注解),以将.NET类与数据库表对应起来。此外,事务管理和缓存策略...

    Spring.NET+NHibernate+NHibernate.Mapping.Attribute自动映射

    不喜欢NHibernate传统的*.hbm.xml来对数据库进行映射的朋友有福了,可以使用NHibernate.Mapping.Attribute.dll来实现自动映射。 减少不小的工作量。

    NHibernate通用组件v1.1

    2. **映射**: 映射文件(如.hbm.xml或使用Fluent NHibernate的代码映射)定义了对象模型与数据库表之间的关系。每个类对应一个表,类的属性对应表的列。 3. **会话**: NHibernate的会话是与数据库交互的主要接口,...

    NHibernate

    2. 定义持久化类,这些类代表数据库中的表,并且通常包含属性来映射表中的列。 3. 配置 NHibernate,指定数据库类型、连接字符串等信息,这通常通过一个配置文件(如 nh.config 或 hibernate.cfg.xml)完成。 4. ...

    VC6.0中不规则窗体和透明窗体的实现

    2. **转换为区域**:使用`BitmapToRegion`函数从位图中提取非透明像素,并创建一个与这些像素对应的区域对象(`HRGN`)。这一步是实现不规则窗体的关键。 ```cpp HRGN BitmapToRegion(HBITMAP hBmp, COLORREF ...

    win32编程笔记.docx编程资料

    2. 使用静态链接而不是动态链接。 3. 删除未使用的代码和资源。 #### 十、判断Radiobox是否选中的方法 判断RadioButton是否被选中可以通过发送`BM_GETCHECK`消息来实现。 **示例代码**: ```c++ int state = ...

Global site tag (gtag.js) - Google Analytics