eclipse开发J2EE项目系列(3)——Hibernate映射文件和数据库表互转

优缺点:

 

经过项目实践,  总结出先设计表的几个缺点:

Java代码 复制代码
  1. 1 .  各种不同数据库间类型与 Java 类型映射关系不同导致 E-R 设计的难度,  使得 o/r 的数据库可移植性大打折扣。  
  2.   
  3. 2 .   business 发生变化 需要修改 表结构时,  需要修改的地方有 表, 映射文件, 实体, E-R 图,  这些工作都非常繁琐且容易出错,  如果先设计 Entity Object,  不会存在上述问题.  
  4.   
  5. 3 .  非 OO 的设计思路可能会导致涉及到多表查询的复杂度增加. 

 

 

 

==========================

 

 

一、由映射文件生成对应的数据库

 

自动生成只适用于数据库的表,数据库没有的话,需要自已手工建立。

 

(方法一:启动服务器自动生成数据库表)

 

    此方法需要配置hibernate.cfg.xml 文件,在该文件中添加属性:

 

<property name="hbm2ddl.auto">create</property>

 

这种方式可以在启动web服务后首次调用Hibernate时自动建立数据库表,建立表后再把这个属性去掉,防止以后自动重新建立表,丢失数据。

 

 

(方法二:由java文件主函数生成数据库表)

 

 

    1、新建工程dianziHibernateBase。首先第一步,还是导入必备的jar包。

    Hibernate3.3.1 必备包:

 

antlr-2.7.6.jar

commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate3.jar
javassist-3.4.GA.jar
jta-1.1.jar

 

 mysql3.1.11 驱动:

mysql-connector-java-3.1.11-bin.jar

 

    另外还有三个包是必备的,可以到findjar网站 搜索并下载,这个网站真的是很有用的一个工具网站

log4j-1.2.13.jar
slf4j-api-1.5.6.jar
slf4j-log4j12-1.5.6.jar

 

    其次是安装mysql5,我安装的是5.0.18,有关mysql的安装请查看《mysql5全新安装手册》

 

 

    2、拷贝所需文件

    从eclipse开发J2EE项目系列(2) 中拷贝如下文件,内容无需修改:

SuperAModel.java
SuperIModel.java
User.java
AutoExportDB.java
User.hbm.xml
hibernate.cfg.xml

 

目录结构如下图:

 

 

 

 

 

    其中"AutoExportDB.java"是工具类主函数,我们执行如下代码,就能轻松将User类导入数据库转变成数据库中的表。不过,前提是我们已经在MySQL中建立了一个名为"struts2"的数据库(根据配置文件hibernate.cfg.xml得来)。

 

    利用此方法,可以先进行Java类的设计,再自动生成配置文件和数据库表,这样做更符合OO的设计思想,但是如果遇到表与表之间关系复杂,可能就不是很适合了。实际项目开发中,多应用由数据库表生成Hibernate实体类和配置文件。

 


/**
 * 
 */
package com.dianzi.util;

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;

/**
 * 生成数据库表
 * 
 * @author 点子二木
 * @date 2009-1-7
 * @version 1.0
 */
public class AutoExportDB {
	static Session session;

	static Configuration config = null;
	static Transaction tx = null;

	/**
	 * 运行此类,通过POJO类和配置文件,创建数据库结构
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println("开始自动创建数据库结构...");
		try {
			config = new Configuration().configure();

			SessionFactory sessionFactory = config.buildSessionFactory();
			session = sessionFactory.openSession();
			tx = session.beginTransaction();

			SchemaExport schemaExport = new SchemaExport(config);
			schemaExport.create(true, true);

			tx.commit();
			System.out.println("数据库结构创建成功...");
		} catch (HibernateException e) {
			e.printStackTrace();
			System.out.println("数据库结构创建失败...");
			try {
				tx.rollback();
			} catch (HibernateException e1) {
				e1.printStackTrace();
			}
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("数据库结构创建失败...");
			try {
				tx.rollback();
			} catch (HibernateException e1) {
				e1.printStackTrace();
			}
		} finally {
			System.out.println("结束...");
		}
	}
}

 

 

二、由数据库表生成Hibernate实体类和配置文件   (本部分尚未学习清楚,以后再补充)

 

(方法一:Myeclipse中集成了此工具)

由于不免费,且工具非常简单易用,故不详细说明。

 

(方法二:)

Hibernate Tools for Eclipse插件的安装和使用

http://blog.chinaunix.net/u1/45779/showart_1409209.html

 

 

(方法三:)

Hibernate Synchronizer

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值