优缺点:
经过项目实践, 总结出先设计表的几个缺点:
- 1
. 各种不同数据库间类型与 Java 类型映射关系不同导致 E-R 设计的难度, 使得 o/r 的数据库可移植性大打折扣。
-
- 2
. business 发生变化 需要修改 表结构时, 需要修改的地方有 表, 映射文件, 实体, E-R 图, 这些工作都非常繁琐且容易出错, 如果先设计 Entity Object, 不会存在上述问题.
-
- 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
分享到:
相关推荐
12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO 12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和...
12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO 12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和...
12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO 12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和...
12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO 12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和...
第二部分详细讲解了Struts 2.1、Spring 2.5和Hibernate 3.2三个框架用法,介绍三个框架时,通过Eclipse IDE的使用来上手,一步步带领读者深入三个框架的核心.第三部分示范开发了一个包含7个表,表之间具有复杂的关联...
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端...
第三部分示范开发了一个包含7个表,表之间具有复杂的关联映射、继承映射等关系,且业务也相对复杂的工作流案例,让读者理论联系实际,将三个框架真正运用到实际开发中去。该案例采用目前最流行、最规范的Java EE架构...
本书从持久层入手,引出对象/关系数据库映射的由来,接下来聚焦于目前最完善、最强悍的ORM产品—— Hibernate。从一个基础程序入手,讲述Hibernate的基本语法与配置,慢慢升高到缓存、延迟加载等高级特性。本书内容...
2. Java时间和日期类型的Hibernate映射类型 224 3. Java大对象类型的Hibernate映射类型 225 4. 关联关系映射 225 5. Hibernate的事务与并发 238 (十) 数据库 240 1. 数据库的基本概念 240 2. 数据模型 240 3. 关系...
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端...
表结构元数据的API也向用户开放,同时支持在使用过程中,灵活调整映射关系,因此用户可以用API动态的创建表结构的模型,从而实现各种动态类型和表的映射(例如POJO中包含一个Map,用于映射各种动态扩展的字段)企业...
第1章 经典Java EE应用和开发环境 9 1.1 经典Java EE应用概述 10 1.1.1 Java EE 6相关规范 10 1.1.2 经典Java EE应用的分层模型 11 1.1.3 经典Java EE应用的组件 13 1.1.4 经典Java EE应用架构的优势 13 1.1.5 常用...
2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...
本设计就是基于J2EE 体系结构下的WEB 开发,设计的目的是了解J2EE体系的多层结构以及其两大容器WEB容器和EJB容器,重点掌握WEB技术、Struts和Hibernate技术、熟悉其开发环境的构建和工具的使用。在开发中使用了目前...