- 浏览: 913953 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (537)
- Java SE (114)
- Struts (18)
- Hibernate (25)
- Spring (3)
- Page_Tech (41)
- Others (87)
- Database (29)
- Server (24)
- OpenSource_Tools (15)
- IDE_Tool (22)
- Algorithm (28)
- Interview (22)
- Test (28)
- Hardware (1)
- Mainframe (25)
- Web application (4)
- Linux (3)
- PHP (17)
- Android (1)
- Perl (6)
- ubuntu (1)
- Java EE (9)
- Web Analysis (5)
- Node.js (2)
- javascript (2)
最新评论
-
一键注册:
request.getRequestURL()和request.getRequestURI() -
SuperCustomer:
...
SED的暂存空间和模式空间 -
juyo_ch:
讲得挺好理解的,学习了
java 死锁及解决 -
chinaalex:
最后一题答案正确,但是分析有误.按照如下过程,上一行为瓶,下一 ...
zz智力题 -
liaowuxukong:
多谢博主啦,弱弱的了解了一点。
C++/Java 实现多态的方法(C++)
Hibernate中需要class和mapping file, 也就是java文件和hbm.xml文件,由于Hibernate只支持DML, 不支持DDL,所以在DB中需要有DDL或已经存在的数据库的表。Hibernate中共有三种文件与代码自动生成功能有关:
class, mapping file and DDL
1. Middlegen
是用来从DB中已存在的表,生成相应的mapping file. 可以下载一个老外的middlegen的例子。
http://sourceforge.net/project/showfiles.php?group_id=40712
调用Middlegen很简单,例子中的middlegen自动生成ant指令如下
<middlegen
appname="${name}"
prefsdir="${src.dir}"
gui="${gui}"
databaseurl="${database.url}"
initialContextFactory="${java.naming.factory.initial}"
providerURL="${java.naming.provider.url}"
datasourceJNDIName="${datasource.jndi.name}"
driver="${database.driver}"
username="${database.userid}"
password="${database.password}"
>
<hibernate
destination="${build.gen-src.dir}"
package="${name}.hibernate"
/>
</middlegen>
然后会有一个GUI,给我们专门设计各种表与表之间的关系(一对一,一对多以及单向双向关系)。需要说明的是,middlegen生成的代码没有直接写mapping file灵活性好,所以生成的mapping file有时还需要我们去修改。
2. XDoclet
它是用来从java文件自动生成hbm文件的,不过我们需要在java代码中写一些规定的tag,才能得到自动生成的hbm文件.
- <hibernatedoclet
- destdir="src"
- excludedtags="@version,@author,@todo"
- force="true"
- verbose="true">
- <fileset dir="src">
- <include name="**/*.java"/>
- <exclude name="**/Product.java"/>
- </fileset>
- <hibernate version="2.0"/>
- </hibernatedoclet>
<hibernatedoclet destdir="src" excludedtags="@version,@author,@todo" force="true" verbose="true"> <fileset dir="src"> <include name="**/*.java"/> <exclude name="**/Product.java"/> </fileset> <hibernate version="2.0"/> </hibernatedoclet>
3. hbm2java
它是用来从mapping 文件生成java代码的工具,调用很简单,在参数中需要给出所有的hbm文件,如下:
- <java classname="net.sf.hibernate.tool.hbm2java.CodeGenerator" fork="true">
- <classpath refid="classpath"/>
- <arg line="${build.gen-src.dir}/airline/hibernate/*.hbm.xml"/>
- </java>
<java classname="net.sf.hibernate.tool.hbm2java.CodeGenerator" fork="true"> <classpath refid="classpath"/> <arg line="${build.gen-src.dir}/airline/hibernate/*.hbm.xml"/> </java>
4. SchemaExport
如果写好了java文件和hbm文件,就可以用SchemaExport直接生成DDL文件,调用同样简单,只需在java代码中,加入如下:
- conf = new Configuration();
- .addClass(a.class);
- .addClass(b.class);;
- SchemaExport dbExport = new SchemaExport(conf);;
- dbExport.setOutputFile("myschema.sql");;
- dbExport.create(true, true);;
conf = new Configuration(); .addClass(a.class); .addClass(b.class);; SchemaExport dbExport = new SchemaExport(conf);; dbExport.setOutputFile("myschema.sql");; dbExport.create(true, true);;
从这四种自动生成工具来看, mapping file, java file and DDL,只要知道任何一种文件,都可以得到另外两种文件,
如:
1. 只有mapping file:
mapping file---hbm2java----java---SchemaExport----DDL
2.只有DDL
DDL---Middlegen---hbm----hbm2java----java
3.只有Java
java---XDoclet---hbm----SchemaExport----DDL
从这里,大家也可以体会到, Hibernate强大的灵活性。
发表评论
-
hibernate n+1问题
2010-10-21 11:05 930Hibernate中常会用到set,bag等集合表示1对多的关 ... -
Hibernate 关联关系 总结
2010-09-09 15:27 9581.一对多的单向关联关系 配置单向的一对多关系是 ... -
Hibernate 关联
2010-09-09 15:24 10011、hibernate多对一关联映 ... -
Hibernate一对多(单向)
2010-09-09 14:31 593[正文]: Hibernate一对多关联,例如一个用户有 ... -
Hibernate中No row with the given identifier exists问题的原因及解决
2010-06-23 09:54 934产生此问题的原因: ... -
Hibernate使用count(*)取得表中记录总数(跨Hibernate3.x版本问题)
2010-06-22 17:13 1530Java代码 /** * @T ... -
hibernate继承关系映射
2010-06-13 16:58 916hbn 的继承映射关系有这 ... -
Hibernate集合映射
2010-06-13 12:49 912准备找工作,重新整理一下Hibernate,今天做了集合映射 ... -
高并发网站的架构
2010-05-07 11:07 715我在CERNET做过拨号接入平台的搭建,而后在Yaho ... -
Hibernate事务和并发控制
2010-05-07 10:21 9131. 事务介绍:1.1. 事务的定义:事务就 ... -
hibernate中lazy的使用
2009-12-18 22:00 778lazy,延迟加载 Lazy的 ... -
hibernate工具箱—根据映射文件自动建表
2009-12-04 12:08 976public class ExportDB { ... -
关联加载对象时的报错-----a different object with the same identifier value
2009-11-18 16:13 882因为在hibernate中同一个session里面有了两个相同 ... -
update/saveOrUpdate/merge
2009-11-18 15:28 1140通常下面的场景会使用update()或saveOrUpdate ... -
写得很不错的-Hibernate中的实体状态(二)
2009-11-18 15:08 948(2)session.merge ()方法 ... -
写得很不错的-Hibernate中的实体状态(一)
2009-11-18 15:04 1136持久层的解决方案有许 ... -
Hibernate3.x总结
2009-11-18 14:29 747Hibernate不是盏省油的灯 ... -
Hibernate Annotation几种关联映射
2009-11-02 17:01 1076Hibernate Annotation几种关联映射 一对一 ... -
hibernate3的注解映射学习
2009-11-02 16:41 1344注解映射必须满足两大条件:Hibernate3.2以上版本和J ... -
Hibernate 中级联操作 cascade 选项
2009-11-02 16:35 926none :在保存、更新或删除对象时,忽略其他关联的对象。他是 ...
相关推荐
### Hibernate学习笔记小结 #### 一、简介与配置 **Hibernate** 是一款开源的对象关系映射(ORM)框架,它允许开发人员将Java对象自动持久化到数据库表中,从而简化了数据访问层的开发工作。在Spring框架中,...
本文详细介绍了Hibernate框架中的核心配置文件`hibernate.cfg.xml`及其配置项、映射文件`xxx.hbm.xml`,以及核心API如Configuration和SessionFactory的使用方法,并对C3P0连接池进行了简要说明。通过这些内容的学习...
- `@SequenceGenerator`:定义序列生成器,用于自动生成主键值。 此外,还需要引入相关的包,例如`javax.persistence`和`org.hibernate.annotations`,以便使用这些注解。 通过这种方式,开发人员可以在不编写XML...
2.3.3 生成Java源代码 2.4 与Java EE服务整合 2.4.1 与JTA整合 2.4.2 JNDI绑定的SessionFactory 2.4.3 JMX服务部署 2.5 小结 第3章 领域模型和元数据 3.1 CaveatEmptor应用程序 ...
### 小结 以上总结的知识点涵盖了Hibernate中与数据库的数据类型映射,关系配置的XML和注解方法,以及一些基础的FAQ解答。由于Hibernate框架的广泛性,其功能和配置内容远远不止这些。要全面掌握Hibernate,还需要...
本章主要介绍关系数据库中的代理主键(不具有业务含义),接着介绍Hibernate提供的几种内置标识符生成器的用法及适用范围。 6.1 关系数据库按主键区分不同的记录 123 6.1.1 把主键定义为自动增长标识符类型 123 ...
#### 四、小结 本篇笔记总结了Hibernate中常用的注解配置方式,包括实体类的基本配置、属性映射配置、复合类型配置以及主键生成策略等。通过这些注解,我们可以方便地将Java对象映射到关系型数据库中,简化了持久化...
本章主要介绍关系数据库中的代理主键(不具有业务含义),接着介绍Hibernate提供的几种内置标识符生成器的用法及适用范围。 6.1 关系数据库按主键区分不同的记录 123 6.1.1 把主键定义为自动增长标识符类型 123 ...
#### 四、小结 通过对Struts2、Spring和Hibernate的整合,不仅能够构建出功能完善、性能优异的企业级应用,还能在开发过程中充分利用各框架的优势,降低系统的复杂度。希望以上内容能够帮助读者更好地理解和掌握这...
#### 小结 Hibernate是一个强大的ORM框架,它通过对象关系映射的方式简化了数据库操作,并提供了一系列高级特性来优化性能和简化开发流程。无论是简单的CRUD操作还是复杂的事务处理,Hibernate都能提供有效的解决...
7.2.11 自动生成SQL语句 113 7.3 JDBC应用实例:登录系统 114 7.4 本章小结 116 第8章 Struts框架的开发及应用 117 8.1 Struts框架概述 117 8.1.1 MVC设计模式 117 8.1.2 Struts框架工作原理 118 8.1.3 Struts框架...
- Middlegen是一个代码生成工具,可以根据数据库表结构自动生成Java实体类。 - **3.7 hbm2java工具** - hbm2java是Hibernate提供的工具,用于根据.hbm.xml文件生成对应的Java实体类。 **3.8 分页显示的实现** - ...
- Middlegen是一个代码生成工具,它可以自动生成Java实体类和Hibernate配置文件,提高开发效率。 - **3.7 hbm2java工具** - hbm2java工具用于将Hibernate的映射文件(hbm.xml)转换成对应的Java实体类。 - **3.8 ...
#### 三、小结 以上介绍的是JPA中单字段主键生成的基本策略。每种策略都有其适用场景和优缺点。开发者应根据具体的应用需求和数据库特性选择最适合的生成方式。例如,在性能要求较高的场景下可以选择`IDENTITY`或`...
在SSH实践中,Hibernate作为数据访问层,负责将Java对象映射到数据库表,实现了SQL的自动生成和执行,大大减少了数据库操作的代码量。 4. **源码分析** 在SSH实践中,理解源码可以帮助开发者深入掌握每个框架的...
Tomcat JSP Web 开发中的乱码问题小结 164 第九章 开发Struts 1.x应用 166 9.1 介绍 166 9.2 创建Struts项目 168 9.2.1 创建Web项目 169 9.2.2 加入 Struts开发功能 169 9.3 使用Struts工具 171 9.3.1 Struts配置...