搜档网
当前位置:搜档网 › Hibernate实战

Hibernate实战

Hibernate实战
Hibernate实战

作者简介

Christian Bauer,Hibernate核心开发人员,并负责维护Hibernate的文档与网站。目前他是Red Hat公司JBoss部门负责Hibernate、EJB 3.0和Seam的产品经理。

编辑推荐

Hibernate之父亲自执笔,无可替代的Hibernate和ORM技术圣经,职业Java程序员必备秘籍。

持久化是现代企业级应用的核心特性。作为Java世界最流行的持久化框架,Hibernate已经成为开发Java EE应用系统中不可替代的支柱之一。随着EJB 3.0和Java Persistence标准的发布,Hibernate也迎来了更加成熟的新版本——Hibernate 3.2。新版本实现了Java Persistence标准,既可以用于流行的开源技术组合(如Spring、Struts和Seam等)。也可以与其他EJB 3.0组件和Java EE服务集成。

本书通过一个应用将数百个例子融合起来,不仅深入剖析了Hibernate 3.2和Java Persistence丰富的编程模型。还深刻阐述了数据库设计、ORM和优化等方面的基本原则、策略和最佳实践。书中处处闪烁着作者超凡的真知灼见,将大大升华读者对ORM乃至企业级应用开发的理解。

本书简介

本书全面讲述了Hibernate和Java Persistence,并对两者进行了详细的对比分析。书中通过一个应用将数百个例子融合起来,不仅深入剖析了Hibernate 3.2和Java Persistence丰富的编程模型,还深刻阐述了数据库设计、对象/关系映射(ORM)和优化等方面的基本原则、策略和最佳实践。书中处处闪烁着作者超凡的真知灼见,将大大升华读者对ORM乃至企业级应用开发的理解。

本书适合广大的开发人员,从ORM的初学者到经验丰富的开发人员。

目录

第一部分 从Hibernate和EJB 3.0开始

 第1章 理解对象/关系持久化 

1.1 什么是持久化 

1.1.1 关系数据库 

1.1.2 理解SQL 

1.1.3 在Java中使用SQL 

1.1.4 面向对象应用程序中的持久化 

1.2 范式不匹配 

1.2.1 粒度问题 

1.2.2 子类型问题 

1.2.3 同一性问题 

1.2.4 与关联相关的问题 

1.2.5 数据导航的问题 

1.2.6 不匹配的代价 

1.3 持久层和其他层 

1.3.1 分层架构 

1.3.2 用SQL/JDBC手工编写持久层 

1.3.3 使用序列化 

1.3.4 面向对象的数据库系统 

1.3.5 其他选项 

1.4 ORM 

1.4.1 什么是ORM 

1.4.2 一般的ORM问题 

1.4.3 为什么选择ORM 

1.4.4 Hibernate、EJB 3和JPA简介 

1.5 小结 

 第2章 启动项目 

2.1 启动Hibernate项目 

2.1.1 选择开发过程 

2.1.2 建立项目 

2.1.3 Hibernate配置和启动 

2.1.4 运行和测试应用程序 

2.2.2 使用Hibernate EntityManager 2.2.3 引入EJB组件 

2.2.4 切换到Hibernate接口 

2.3 反向工程遗留数据库 

2.3.1 创建数据库配置 

2.3.2 定制反向工程 

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应用程序 

3.1.1 分析业务领域 

3.1.2 CaveatEmptor领域模型 

3.2 实现领域模型 

3.2.1 处理关注点渗漏 

3.2.2 透明和自动持久化 

3.2.3 编写POJO和持久化实体类 3.2.4 实现POJO关联 

3.2.5 把逻辑添加到访问方法 

3.3 ORM元数据 

3.3.1 XML中的元数据 

3.3.2 基于注解的元数据 

3.3.3 使用XDoclet 

3.3.4 处理全局的元数据 

3.3.5 运行时操作元数据 

3.4 其他实体表示法 

3.4.1 创建动态的应用程序 

3.4.2 表示XML中的数据 

3.5 小结 

第二部分 映射概念和策略

 第4章 映射持久化类 

4.1 理解实体和值类型 

4.1.1 细粒度的领域模型 

4.1.2 定义概念 

4.1.3 识别实体和值类型 

4.2 映射带有同一性的实体 

4.2.1 理解Java同一性和等同性 

4.2.2 处理数据库同一性 

4.2.3 数据库主键 

4.3 类映射选项 

4.3.1 动态的SQL生成 

4.3.2 使实体不可变 

4.3.3 给查询命名实体 

4.3.6 实现命名约定 

4.4 细粒度的模型和映射 

4.4.1 映射基础属性 

4.4.2 映射组件 

4.5 小结 

 第5章 继承和定制类型 

5.1 映射类继承 

5.1.1 每个带有隐式多态的具体类一张表 5.1.2 每个带有联合的具体类一张表 

5.1.3 每个类层次结构一张表 

5.1.4 每个子类一张表 

5.1.5 混合继承策略 

5.1.6 选择策略 

5.2 Hibernate类型系统 

5.2.1 概述实体和值类型 

5.2.2 内建的映射类型 

5.2.3 使用映射类型 

5.3 创建定制的映射类型 

5.3.1 考虑定制的映射类型 

5.3.2 扩展点 

5.3.3 定制映射类型的案例 

5.3.4 创建UserType 

5.3.5 创建CompositeUserType 

5.3.6 参数化定制类型 

5.3.7 映射枚举 

5.4 小结 

 第6章 映射集合和实体关联 

6.1 值类型的set、bag、list和map 

6.1.1 选择集合接口 

6.1.2 映射set 

6.1.3 映射标识符bag 

6.1.4 映射list 

6.1.5 映射map 

6.1.6 排序集合和有序集合 

6.2 组件的集合 

6.2.1 编写组件类 

6.2.2 映射集合 

6.2.3 启用双向导航 

6.2.4 避免非空列 

6.3 用注解映射集合 

6.3.1 基本的集合映射 

6.3.2 排序集合和有序集合 

6.3.3 映射嵌入式对象的集合 

6.4 映射父/子关系 

6.4.1 多样性 

6.4.2 最简单的可能关联 

6.5 小结 

 第7章 高级实体关联映射 

7.1 单值的实体关联 

7.1.1 共享的主键关联 

7.1.2 一对一的外键关联 

7.1.3 用联结表映射 

7.2 多值的实体关联 

7.2.1 一对多关联 

7.2.2 多对多关联 

7.2.3 把列添加到联结表 

7.2.4 映射map 

7.3 多态关联 

7.3.1 多态的多对一关联 

7.3.2 多态集合 

7.3.3 对联合的多态关联 

7.3.4 每个具体类一张多态表 7.4 小结 

 第8章 遗留数据库和定制SQL 

8.1 整合遗留数据库 

8.1.1 处理主键 

8.1.2 带有公式的任意联结条件 8.1.3 联结任意的表 

8.1.4 使用触发器 

8.2 定制SQL 

8.2.1 编写定制CRUD语句 

8.2.2 整合存储过程和函数 

8.3 改进Schema DDL 

8.3.1 定制SQL名称和数据类型 8.3.2 确保数据一致性 

8.3.3 添加领域约束和列约束 8.3.4 表级约束 

8.3.5 数据库约束 

8.3.6 创建索引 

8.3.7 添加辅助的DDL 

8.4 小结 

第三部分 会话对象处理

 第9章 使用对象 

9.1 持久化生命周期 

9.1.1 对象状态 

9.1.2 持久化上下文 

9.2 对象同一性和等同性 

9.2.1 引入对话 

9.2.2 对象同一性的范围 

9.2.3 脱管对象的同一性 

9.2.4 扩展持久化上下文 

9.3 Hibernate接口 

9.3.3 管理持久化上下文 

9.4 JPA 

9.4.1 保存和加载对象 

9.4.2 使用脱管的实体实例 

9.5 在EJB组件中使用Java Persistence 

9.5.1 注入EntityManager 

9.5.2 查找EntityManager 

9.5.3 访问EntityManagerFactory 

9.6 小结 

 第10章 事务和并发 

10.1 事务本质 

10.1.1 数据库和系统事务 

10.1.2 Hibernate应用程序中的事务 10.1.3 使用Java Persistence的事务 

10.2 控制并发访问 

10.2.1 理解数据库级并发 

10.2.2 乐观并发控制 

10.2.3 获得额外的隔离性保证 

10.3 非事务数据访问 

10.3.1 揭开自动提交的神秘面纱 

10.3.2 使用Hibernate非事务地工作 10.3.3 使用JTA的可选事务 

10.4 小结 

 第11章 实现对话 

11.1 传播Hibernate Session 

11.1.1 Session传播的用例 

11.1.2 通过线程局部传播 

11.1.3 利用JTA传播 

11.1.4 利用EJB传播 

11.2 利用Hibernate的对话 

11.2.1 提供对话保证 

11.2.2 利用脱管对象的对话 

11.2.3 给对话扩展Session 

11.3 使用JPA的对话 

11.3.1 Java SE中的持久化上下文传播 11.3.2 在对话中合并脱管对象 

11.3.3 在Java SE中扩展持久化上下文 11.4 使用EJB 3.0的对话 

11.4.1 使用EJB的上下文传播 

11.4.2 利用EJB扩展持久化上下文 

11.5 小结 

 第12章 有效修改对象 

12.1 传播性持久化 

12.1.1 按可到达性持久化 

12.1.2 把级联应用到关联 

12.1.3 使用传播性状态 

12.2.1 使用HQL和JPA QL的大批量语句 12.2.2 利用批量处理 

12.2.3 使用无状态的会话 

12.3 数据过滤和拦截 

12.3.1 动态数据过滤 

12.3.2 拦截Hibernate事件 

12.3.3 内核事件系统 

12.3.4 实体监听器和回调 

12.4 小结 

 第13章 优化抓取和高速缓存 

13.1 定义全局抓取计划 

13.1.1 对象获取选项 

13.1.2 延迟的默认抓取计划 

13.1.3 理解代理 

13.1.4 禁用代理生成 

13.1.5 关联和集合的即时加载 

13.1.6 通过拦截延迟加载 

13.2 选择抓取策略 

13.2.1 批量预抓取数据 

13.2.2 通过子查询预抓取集合 

13.2.3 通过联结即时抓取 

13.2.4 给二级表优化抓取 

13.2.5 优化指导方针 

13.3 高速缓存基本原理 

13.3.1 高速缓存策略和范围 

13.3.2 Hibernate高速缓存架构 

13.4 高速缓存实践 

13.4.1 选择并发控制策略 

13.4.2 理解高速缓存区域 

13.4.3 设置本地的高速缓存提供程序 

13.4.4 设置重复的高速缓存 

13.4.5 控制二级高速缓存 

13.5 小结 

 第14章 利用HQL和JPA QL查询 

14.1 创建和运行查询 

14.1.1 准备查询 

14.1.2 执行查询 

14.1.3 使用具名查询 

14.2 基本的HQL和JPA QL查询 

14.2.1 选择 

14.2.2 限制 

14.2.3 投影 

14.3 联结、报表查询和子查询 

14.3.1 联结关系和关联 

14.3.2 报表查询 

14.3.3 利用子查询 

15.1 利用条件和示例查询 

15.1.1 基本的条件查询 

15.1.2 联结和动态抓取 

15.1.3 投影和报表查询 

15.1.4 按示例查询 

15.2 利用原生的SQL查询 

15.2.1 自动的结果集处理 

15.2.2 获取标量值 

15.2.3 Java Persistence中的原生SQL 

15.3 过滤集合 

15.4 高速缓存查询结果 

15.4.1 启用查询结果高速缓存 

15.4.2 理解查询高速缓存 

15.4.3 什么时候使用查询高速缓存 

15.4.4 自然标识符高速缓存查找 

15.5 小结 

 第16章 创建和测试分层的应用程序 

16.1 Web应用程序中的Hibernate 

16.1.1 用例简介 

16.1.2 编写控制器 

16.1.3 OSIV模式 

16.1.4 设计巧妙的领域模型 

16.2 创建持久层 

16.2.1 泛型的数据访问对象模式 

16.2.2 实现泛型CRUD接口 

16.2.3 实现实体DAO 

16.2.4 利用数据访问对象 

16.3 命令模式简介 

16.3.1 基础接口 

16.3.2 执行命令对象 

16.3.3 命令模式的变形 

16.4 利用EJB 3.0设计应用程序 

16.4.1 利用有状态的bean实现会话 

16.4.2 利用EJB编写DAO 

16.4.3 利用依赖注入 

16.5 测试 

16.5.1 理解不同种类的测试 

16.5.2 TestNG简介 

16.5.3 测试持久层 

16.5.4 考虑性能基准 

16.6 小结 

 第17章 JBoss Seam简介 

17.1 Java EE 5.0编程模型 

17.1.1 JSF详解 

17.1.2 EJB 3.0详解 

17.1.3 用JSF和EJB 3.0编写Web应用程序 

17.2.1 配置Seam 

17.2.2 将页面绑定到有状态的Seam组件 

17.2.3 分析Seam应用程序 

17.3 理解上下文组件 

17.3.1 编写登录页面 

17.3.2 创建组件 

17.3.3 给上下文变量起别名 

17.3.4 完成登录/注销特性 

17.4 验证用户输入 

17.4.1 Hibernate Validator简介 

17.4.2 创建注册页面 

17.4.3 用Seam实现国际化 

17.5 利用Seam简化持久化 

17.5.1 实现对话 

17.5.2 让Seam管理持久化上下文 

17.6 小结 

附录A SQL基础知识 

附录B 映射快速参考 

下载后 点击此处查看更多内容

《JavaEE》课程设计报告实验

《JavaEE》课程设计报告 题目名称:基于struts2、Spring、Hibernate 构建一个网上投票系统 指导教师:_______ _________ _______ 专业班级:__ ____ ______ _ 组长:________ _____ ______ 成员:__ 娄宇杨浩亮张益民林强 __ __ 电子邮件:____ 15224891@https://www.sodocs.net/doc/c33778395.html,_ ______ _ 设计时间: 2011 年 11 月 16 日至 2011 年 12 月 21 日 成绩:______

目录 基于struts2、Spring、Hibernate构建一个网上投票系统 (3) 一、问题描述及设计思路 (3) 1.1 需求分析 (3) 1.2业务分析 (3) 1.3投票用例 (5) 二、详细设计过程 (8) 2.1 创建Struts2应用 (8) 2.2 添加Hibernate (8) 2.3 添加Spring应用 (9) 2.4 领域模型层设计 (9) 三、结论和体会 (13) 3.1 结论 (13) 3.2 体会 (13) 四、附录 (14) 附录A 其它图表 (14) 附录B 主要程序代码 (15) 五、参考文献 (21)

基于struts2、Spring、Hibernate构建一个 网上投票系统 一、问题描述及设计思路 对于开发一个投票管理系统来说,应该实现什么功能,如何实现这个功能都是开发人员必须了解的问题。将这个系统的需求、业务流程以及用例进行细致的分析、讲解。 1.1 需求分析 随着网络应用的日益普及,投票的形式也发生了很大的变化。目前在很多的场合,投票已经开始由原始方式转变为网上投票。由于具有方便、快捷、成本低、调查范围广等优点,网上投票已经被广泛的应用。如何管理好网上投票信息内容也变得十分的重要,我们所设计开发的投票管理系统,正是基于这种需求诞生的。 本投票管理系统分为用户提供网上投票和投票信息管理两大类功能。通过投票管理功能可以完成增加新投票、修改原有投票信息、查找投票等功能。本系统的界面友好、操作简便,适用于任何网站进行投票调查。 本系统的基本功能如下所述。 ●使用本系统的网上投票功能,用户只要登录指定的网页,就可以进行投票操作,并 可以得到投票结果信息。 ●使用本网站的登录功能,管理员可以登录系统,然后对相关的信息进行管理。 ●使用本系统的创建投票功能,管理员可以创建一个新的投票功能。。 ●使用本系统的管理投票功能,管理员可以对系统已经存在的投票进行更新,包括增 加投票子选项、删除投票子选项、修改投票类型、更改投票状态。 ●使用本系统的查找投票功能,管理员可以通过输入部分或者全部的投票主题查找对 应的投票信息。 ●使用本系统的管理员管理功能,管理员可以修改本人的密码或者创建一个新的管理 员。 ●使用本系统的注销功能,管理员可以安全的退出本系统。 1.2业务分析 投票管理系统由前台和后台两部分组成:前台显示投票并可以执行投票操作,后台是对投票信息和管理员信息进行管理。下面分别从使用前台和使用后台两个角度来分析本系统的业务流程。 1.2.1显示投票 用户进入投票页面如图,进行投票操作。

Hibernate3.6(开发必看)

1.Java对象持久化概述 1.1.应用程序的分层体系结构 1.1.1.基于B/S的典型三层架构 说明: 1,展现层:提供与用户交互的界面。 2,业务逻辑层:实现各种业务逻辑。 3,数据访问层:负责存放和管理应用程序的持久化业务数据。 1.1. 2.数据访问层与Hibernate在Java应用程序中的 角色 数据访问层(持久化层)封装了数据访问的细节,为业务逻辑层提供了面向对象的API。完善的持久化层应该达到的目标: 1,代码重用性高,可完成所有的数据访问操作。 2,如果需要的话,能够支持多种数据库平台。 3,具有相对独立性,当持久化层变化时,不会影响上层实现。 在数据访问层(持久化层)中可以使用Hibernate框架以实现要求,如下图所示:

1.2.软件模型 1.2.1.各种模型的说明 概念模型: 模拟问题域中的真实实体。描述每个实体的概念和属性及实体间关系。不描述实体行为。实体间的关系有一对一、一对多和多对多。。 关系数据模型: 在概念模型的基础上建立起来的,用于描述这些关系数据的静态结构。有以下内容组成:1,若干表 2,表的所有索引 3,视图 4,触发器 5,表与表之间的参照完整性

域模型: 在软件的分析阶段创建概念模型,在软件设计阶段创建域模型。 组成部分: 1,具有状态和行为的域对象。 2,域对象之间的关联。 域对象(domain object): 构成域模型的基本元素就是域对象。对真实世界的实体的软件抽象,也叫做业务对象(Business Object,BO)。域对象可代表业务领域中的人、地点、事物或概念。 域对象分为以下几种: 1,实体域对象:通常是指业务领域中的名词。(plain old java object,简单Java 对象)。 2,过程域对象:应用中的业务逻辑或流程。依赖于实体域对象,业务领域中的动词。如发出订单、登陆等。 3,事件域对象:应用中的一些事件(警告、异常)。 1.2.2.域对象间的关系 关联: 类间的引用关系。以属性定义的方式表现。

Hibernate学习入门教程

Hibernate学习入门教程 开发环境搭建 [日期:2015-08-11] 来源:Linux社区作者:doctorJoe [字体:大中小] 其实一两个月前就在了解Hibernate方面的知识了,但一直以来,都没有好好的总结,而且一直使用的是myeclipse,感觉有些傻瓜式的操作就可以搭建起Hibernate的开发环境,但这样一点都不好,没有理解到Hibernate到底是怎么配置的,所以你今天特使用Eclipse来一步一步搭建Hibernate的开发环境,下面,正式进入正题。 在Hibernate中开启日志https://www.sodocs.net/doc/c33778395.html,/Linux/2015-07/120499.htm Hibernate+JUnit测试实体类生成数据库表https://www.sodocs.net/doc/c33778395.html,/Linux/2015-07/120161. htm Hibernate整体理解https://www.sodocs.net/doc/c33778395.html,/Linux/2014-07/104405.htm Hibernate的映射机制https://www.sodocs.net/doc/c33778395.html,/Linux/2014-12/110265.htm 新建一个web项目,名字就随便吧,你喜欢什么名字就什么吧,这是我的截图。

引入hibernate的依赖jar包,我使用的是hibernate-release-4.3.10.Final,下载好后解压,打开压缩包下的lib目录下的require文件夹,这是hibernate的所以来的必须的jar包,接下来,在刚才新建的项目里新建一个libs文件夹,将刚才的所说的jar包copy进去,另外,由于我们需要连接MySQL数据库以及使用JUnit测试,将所需的mysql-connector-java-5.0.8-bin.jar和junit-4.5.jar两个jar包引用进去,关于这些jar包,可以在网上搜索。接下来,就是把这些jar 包添加到编译环境中去,选中libs下的jar包,右击选择Build Path –>Add to Build Path,这样就把依赖jar包成功添加进去了。 继续往下,我们需要配置最重要的hibernate配置文件hibernate.cfg.xml以及进行日志处理的log4j.properties属性文件:打开上一步解压后的hibernate文件夹,打开project—>etc文件夹,将该文件夹下的hibernate.cfg.xml和log4j.properties文件拷贝到项目的src文件夹下,打开hibernate.cfg.xml文件,将session-factory标签中的内容替换成如下的内容: org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql:///hibernatedemo root yzp140103 这样就配置好了。 接下来,要做的就是做开发测试了:在项目的src目录下新建一个实体类包com.joe.entity,在该包下新建一个实体类Student,代码如下: package com.joe.entity; import java.io.Serializable;

hibernate和spring框架技术难点及其要点总结

个人总结希望能给你带来一些帮助,限于时间篇幅只能如此,如有不方便之处,望见谅. 出处个人博客: https://www.sodocs.net/doc/c33778395.html,/blog hibernate二级缓存 二级缓存也称为进程级的缓存或SessionFactory级的缓存,二级缓存可以被所有的session共享阅读全文>> 标签:缓存hibernate hibernate配置 2012-6-20 15:50:00 点击:19 评论:0 hibernate与jdbc应用对比 一、Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的... 阅读全文>> 标签:hibernate jdbc 2012-5-21 13:57:00 点击:0 评论:0 HibernateDaoSupport与JdbcDaoSupport Dao 的支持类可以有好多,如: JdbcDaoSupport , HibernateDaoSupport ,JdoDaoSupport等,下面对最常用的HibernateDaoSupport与JdbcDaoSupport做一小总结:一、在Spring框架中实现连接数... 阅读全文>> 2012-5-21 13:53:00 点击:1 评论:0 Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询... HQL查询方式这一种我最常用,也是最喜欢用的,因为它写起来灵活直观,而且与所熟悉的SQL的语法差不太多。条件查询、分页查询、连接查询、嵌套查询,写起来与SQL语法基本一致,唯一不同的就是把表名换成了类或者对象。其它的,包括一些查询函数(count(),sum()等)、... 阅读全文>> 标签:hibernate 2012-5-21 13:51:00 点击:1 评论:0 hibernate的createSQLQuery的几种用法 用法一:对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行 Session.createSQLQuery()获取这个接口。最简单的情况下,我们可以采用以下形式:List cats = sess.c... 阅读全文>> 2012-5-21 13:44:00 点击:0 评论:0 HQL:hibernate查询返回各类型结果数据 1. 查询整个映射对象所有字段Java代码 //直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段 &nbs... 阅读全文>> 2012-5-21 13:38:00 点击:1 评论:0 HQL:Hibernate查询语言 在where子句中允许使用的表达式包括大多数你可以在SQL使用的表达式种类:数学运算符+, -, *, /二进制比较运算符=, >=, <=, <>, !=, like逻辑运算符and, or, notin, not in, between, is nu... 阅读全文>> 2012-5-21 13:34:00 点击:0 评论:0 Hibernate 参数设置一览表 属性名用途hibernate.dialect一个Hibernate Dialect类名允许Hibernate针对特定的关系数据库生成优化的SQL. 取值 full.classname.of.Dialect hibernate.show_sql输出所有SQL语句到控制台. 有一... 阅读全文>>

MyEclipse+Hibernate+快速入门+中文版

提纲 1前言2准备工作3介绍4Hibernate 一览5创建HibernateDemo 项目 5创建HibernateDemo Java Project 5555使用模版调整生成更好的代码55编辑映射文件 6使用HQL 编辑器 7测试HibernateDemo 应用 8使用示例HibernateDemo 项目 9 总结1.前言 本文档基于以下环境编写:Sun JDK 1.5,Eclipse 3.2和MyEclipse 5.0.所有的截屏基于Eclipse,MyEclipse Enterprise Workbench,和Windows XP 的默认用户界面设置.如果你对本文档的介绍有阅读上的困难,请阅读用户反馈部分来了解如何向MyEclipse 文档团队提交反馈. 2.准备工作 下面是这个快速入门的准备工作列表: Java 2SDK,Standard Edition 1.4或者更高版本(参考来了解下载地址) Eclipse 3.2SDK (参考资源来了解下载地址) MyEclipse 5.0(参考资源来了解下载地址) 选择以下可以被Hibernate 和MyEclipse Database Explorer 所支持的数据库服务器列表中的一个 : MyEclipse Hibernate 快速入门中 文版

3.介绍 这个快速入门展示了使用MyEclipse Enterprise Workbench 开发Hibernate 的基本功能,概念和技术.我们将全程带领你来开发一个非常简单的Java Hibernate 应用.对于这个教程没有包含到的问题和概念,我们推荐你去参考资源部分列出的Hibernate 资源. 这个文档展示了如何进行下列工作: 为Java 项目添加MyEclipse Hibernate 支持 在项目中创建Hibernate 配置文件 如何使用自定义的Session Factory 从Database Explorer 的表定义中生成Java 类和Hibernate 数据库映射文件(.hbm ) ?使用HQL 编辑器 创建使用Hibernate 的小测试应用注意:在使用本教程时建议您事先阅读了Database Explorer 快速入门这个教程来了解如何创建连接和元数据功能. 4.Hibernate 一览 Hibernate 是一个非常流行的开源的易于配置和运行的基于Java 的对象-关系映射(JORM)引擎.它提供了很丰富的功能包括: 多种映射策略 可迁移的持久化 单个对象映射到多个表 支持集合 多态关联可自定义的SQL 查询 Axion Hypersonic DB InstantDB Interclient Firebird ODBC Bridge jTDS Mckoi Microsoft SQL Server Mimer SQL MySQL Oracle Pointbase PostgresQL SAPDB Sunopsis XML Sybase ThinkSQL

Hibernate知识的学习

Hibernate知识的学习 --------------------------------------------------第一章------------------------------------------------ 1、为什么用Hibernate呢? 他属于ORM中的一种;用来解决对象与关系模型不匹配的; ===用来解决对象与关系模型不匹配的{方法有两种:使用JDBC手工来操作;还有就是使用ORM来解决}; 学习Hibernate都要到那些包; Hibernate自动创建表; Hibernate测试类中应该怎样启动hibernate调用(主要是构造一个sessionFactory工厂,通过工厂来产生一个session对象,在通过session对象来对Hibernate操作数据库); --------------------------------------------------第二章------------------------------------------------ Hibernate的开发流程;(三点) Hibernate控制一个JavaBean时,应注意的JavaBean应该满足哪三点? --------------------------------------------------第三章------------------------------------------------ 做了一个简单的Hibernate的实例:其中编写了一个HibernateUtil.java文件来专门创建Session 对象的一个公共组件!Hibernate02实例中 --------------------------------------------------第四章------------------------------------------------ Hibernate中Session是最核心的接口,现在我们来学习一下: 通过session对象来完成增、删、改、查、的主要操作! 1.session对象的常用方法: save():添加一个对象,对应到表也就是添加一个信息; delete():删除一个对象,对应到表也就是删除一条信息; update():修改数据库信息,注意一点,当数据库没有信息时,会报出异常; get():根据id查询信息,会立刻访问数据库;【查询数据库时可以不打开事务操作】; Load():根据id查询信息,(返回的是代理,不会立即访问数据库【所以先不产生sql语句,而是当你真正的使用通过Load方法从数据库中去到的记录对象时才输出sql语句】也就是使用了懒加载机制 .如果在使用了Load方法了后,千万不要试图判断去到的对象是否为空值,因为load在这里将会产生出一个对应表JavaBean实体类的子类来处理的,相当于一个代理类的意味;通过user.getClass().getName()来获取这个代理类名称); saveOrUpdate()和merge方法:根据id和version的值来确定是save或update),【调用merge你的对象还是托管的】。【托管中用到了】 refresh():将数据重新读取一次! Lock()方法:查出一条数据,再给数据加一道锁【即为:把对象变成持久对象,但不会同步对象状态】 ------------------------------------------------------------------------------------------- 注意: 1、get和load方法获取数据库表中记录的区别; get():根据id查询信息,会立刻访问数据库;【查询数据库时可以不打开事务操作】; Load():根据id查询信息,(返回的是代理,不会立即访问数据库【所以先不产生sql语句,而是当你真正的使用通过Load方法从数据库中去到的记录对象时才输出sql语句】也就是使用了懒加载机制 .如果在使用了Load方法了后,千万不要试图判断去到的对象是否为空值,因为load在这里将会产生出一个对应表JavaBean实体类的子类来处理的,相当于一个代理类的意味;通过user.getClass().getName()来获取这个代理类名称);

实验 五 Hibernate基础实验

实验五Hibernate基础实验 Part one Hibernate对表的添加 实验目的:掌握Hibernate的基本功能和基本用法 实验要求:通过Hibernate将一个Java对象插入到数据库表中 实验原理: (1)Hibernate是一个面向Java环境的对象/关系数据库映射工具,Hibernate不仅管理Java类型到数据库表的映射,还提供查询数据 和操作数据的OO方法。 (2)Hibernate对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲地使用OO编程思想来处理数据库。 (3)Hibernate采用映射元数据来描述对象-关系的映射细节,元数据通常采用XML。 (4)关系数据库中的元组通过ORM转换成应用程序中的对象;反之,应用程序中的对象通过ORM持久化成关系数据库中的元组。 (5)可以利用Hibernate框架根据配置和类及映射文件生成数据库表结构,反过来,也可以根据数据库表结构生成持久化类和映射文 件。 实验准备: 安装SQL Server20XY(如果是Windows XP上的SQL Server2000版,需要加补丁程序SP3)。 实验步骤: 一.创建Java Project TestH3_2 二.创建数据库及数据源 1.在test数据库中创建表News Use test CREATE TABLE news ( id int IDENTITY (1, 1) primary key ,

title varchar (20) NOT NULL , content text ) Go context的长度在Hibernate中可能闲长,不能插入,需改成较短的类型!设计表结构的图形界面如图5-1所示。 图5-1 设计News表结构的图形化界面 2.打开MyEclipse的Database Explore透视图,如图5-2所示。 图5-2 打开Database Explore透视图 3.创建数据库连接驱动,如图5-3所示。找到jtds-1.2.jar包所在位置。点击Add JARS,把该包包含进去即可。注意:SQL Server的Driver template 选Microsoft SQL Server(jTDS Driver)。

Hibernate常见概念以及关键技术

软件开发的分层思想: 三层架构: 数据表现层业务逻辑层数据持久层 SUN的桌面应用Swing AWT 普通Java类JDBC SUN的WEB基本应用JSP 普通Servlet JDBC SUN的WEB高级应用JSF SessionBean Persistence WEB国内流行开源Struts Spring Hibernate 一、对象持久化的理论 1.对象持久化:内存中的对象转存到外部持久设备上,在需要的时候还可以恢复。 2.对象持久化的原因(目标):// 是基础工作!是信息共享的主要原因 物理:1) 内存不能持久,需要在硬盘上持久保存//(物理上,物理的都不是根本原因) 2) 内存容量有限,需要在容量更大的硬盘上保存 应用:3) 共享(Internet的本质:信息的收集、整理、发布) //最重要的原因 4) 检索(大规模) //也很重要 5) 管理(备份、安全) 3.怎样进行对象持久化?(仅从JA V A方面讲) 物理:1) 对象序列化 2) DB技术(JDBC 数据库) 4.怎样利用数据库做对象持久化? 优点:功能完备、理论上效率高 缺点:复杂(难)、代码量大、面向R(过程;二维表关系) 2) EJB 仅讲Entity Bean 优点:封装JDBC 缺点:更复杂的API、重量级(侵入式)、功能不完备、难共享 缺点的后果:开发周期长、测试困难、面向过程 以上是2.0之前的版本,但3.0跟Hibernate基本一样 3) ORM 轻量级框架(Hibernate) 现阶段最佳的持久化工具:文档齐全、服务很好、工业标准、大量应用、易学 优点:封装JBDC、简单的API、轻量级(只做持久化)(用类库)、PO(持久对象)->POJO(纯JA V A)、开源 缺点:不够JDBC灵活 5.结论: 1)对象持久化是必须的 2)必须使用DB来实现 3)Hibernate必须的(现阶段最佳选择) 开源工具的通常问题:1.文档不全;2.服务不全;3.标准化不够 而Hibernate避免了所有这些问题 二、ORM和Hibernate的相关知识(理解)

实验4

电子科技大学 实验报告 学生姓名:罗佳学号:2014120101013 指导教师:钟毅 实验四 一、实验名称 面向对象的信息系统设计 二、实验内容 根据实验材料的内容及实验三的实验结果,完成以下实验任务: 1. 完成系统的体系结构设计,利用Rational Rose软件进行系统的层次设计,并绘制系统的包图; 2. 根据实验三结果中的类图,对其进行细化,完成设计类的设计。 三、实验材料 ××物资储运公司长期从事物资储运业务,品种多,吞吐量大,有铁路专线直达公司的大型仓库。目前企业已经实现了一定程度上的计算机化管理,其中的财务系统应用已较为成熟。随着企业业务以及外部环境的变化,该公司原开发的信息系统已不能满足新业务、新环境以及客户对信息查询的要求,迫切需要开发一套新的系统以替代原有系统,并实现原有流程的优化,把一些原来未纳入系统管理的功能纳入到新的系统中来,并为转变到第三方物流和与电子商务接轨作好准备。 企业的主要部门包括:总经办、收货组、出货组、调运科、库管科和财务科。总经办主要负责货物出入库的审核、平帐及各种统计工作;收货组主要负责货物的验收入库及存放位置的登记;出货组主要负责货物的出库工作;调运科主要负责从货物的调运及相应报表编制等工作;库管科主要负责货物的装车及盘点等工

作;财务科负责企业的主要财务活动。 企业的主要业务活动包括出库、入库及盘点等。其各自的业务流程如下。 入库流程:总经办根据供货商提供的货品明细单(包括单据号、客户名、货品品名、规格型号、数量、运输车号等信息),创建入库单(主要包括入库业务号、应收数量、实收数量等信息),并打印入库单,将其交至收货组。 火车站发出到站预报,告知调运科“车号、发站、品名、件数、重量、到达时间”等信息。调运员进行卸车登记,编写“到站日报”,记录“卸车时间、情况(事故、破损、短件)、卸车区位”等信息,并通知收货组,进入货物入库流程。 货物卸车后,收货组进行验收,编制“码单”,记录“入库日期、实收数量、存放位置、件数、收货保管员”等信息。收货组查找与该批货物对应的入库单,在入库单上填写实收数量后,将入库单中货品所涉及的码单与入库单进行关联,并将入库单、码单交至总经办审核,总经办审核后,送至发货组。 如货物先于供货商的货品明细单到达,则收货组先进行验收入库,并创建码单。当货品明细单到达后,总经办创建入库单,收货组再查找该入库单,登记实收数量并关联码单。 出库流程:发货组审核用户提供的提货单(主要包括入库单号、品名规格、提货数量等信息),查找相应货品,判断是否有足够数量的货物进行出库,如数量足够出库,则创建三联出库单,产生出库业务号,三联出库单分别交给总经办、供货商、发货组自留。收货组在收取相关出库费用之后,查找货物存放位置,出具派车单。 发货组根据派车单调度车辆,指挥库管人员装车,过秤(可以理论计重的货物不需过秤),并在出库单上记录实出重量。用户缴纳装车费用后,发货组给用户出具出门条,用户凭出门条在门卫处检验放行。 总经办对收到的出库单进行审核。 当一张入库单上全部货物出货完毕后,发货组将入库单、码单、出货单送至总经办。总经办审核无误后,平帐,不得再修改;若出现偏差,则进入事故处理。 盘点流程:总经办根据码单信息创建盘点表,库管科的库管人员根据实际盘点情况填写货物实存数量,并返回总经办。总经办将信息进行汇总,如有误差则进行调帐,做到帐、物数量一致。 六、实验器材(设备、元器件):

Eclipse从入门到精通(第二版)_ch37

第37章 在Eclipse中使用Hibernate 本章将把Hibernate应用到myweb项目中,对数据库层的代码进行改造,同时还会介绍一些Hibernate工具的使用。 37.1 概述 37.1.1 持久化框架产生的背景和现状 什么叫持久化?数据在内存中,关机后就会丢失。而如果把数据保存到后台的数据库中,就能达到“持久”保存数据的目的。而持久化框架的目的就是为了帮助用户更好地使用数据库。 在Java数据库项目中,由于数据库是关系型而非面向对象的。很多时候,用面向对象方法完成了前期的设计和分析,到了数据库层编程时就会变得很别扭,其中最痛苦的就是写面向过程的SQL语句。 J2EE开发主要由JSP、Servlet、JavaBean和EJB 4部分组成。其中EJB是J2EE中一个比较重要的部分,它提供了企业级开发所需的分布式支持。但现实中的大部分项目都是单服务器的轻量级项目,一般都不会涉及分布式的开发环境,这时用EJB就像大炮打蚊子,蚊子没打到,房子却被打破个洞。EJB的笨重和复杂一直让开发者很不满,其中EJB中Entity Bean受到的批评最多,现实项目中鲜有使用Entity Bean的成功范例。 开发者急切地需要一种符合Java编程习惯的、适合轻量级开发的、易于使用的数据库持久化解决方案。在这个背景下就产生了轻量级的数据库持久化技术,其中最主要的就是Hibernate、JDO。 Hibernate是一个民间开源项目,有点像一个草莽英雄,但Hibernate从实用出发的设计思路,使得它脱颖而出成为最流行的持久化技术。Hibernate的作者Gavin King也一举成名,现已成为EJB 3.0专家组的成员,并且在EJB 3.0的Entity Bean部分,将采用和Hibernate 类似的设计方案。因此,Hibernate是开发者学习和使用持久化技术的一个比较好的选择,即使以后EJB 3.0一统天下,所学的Hibernate知识也不会浪费。 JDO 2.0是经JCP(Java规范管理委员会,由SUN、IBM、Oracle等共同参与)承认的一个正式规范,所以也受到了开发者很大的关注。估计未来3年内,持久化技术将以EJB 3.0、Hibernate和JDO 2.0为主,成三足鼎立之势。

利用轻量对象关系映射技术Hibernate提高开发效率

利用轻量对象关系映射技术Hibernate提高开发效率 Enhancing Development Efficiency with Hibernate a Lightweight Object/Relational Mapping Technology 谢挺 周维民 (上海大学机电工程与自动化学院,上海 200072) 摘 要 Hibernate是一种轻量对象关系映射技术。文章通过实例,介绍了Hibernate的一些关键特性,并阐述了该技术的一些局限性。 关键词 Hibernate 对象关系映射企业级JavaBeans 持久化 Abstract Hibernate is a lightweight Object/Relational Mapping(ORM) technology. Some key features of Hibernate are illustrated, and some limits of this technology are expounded. Keywords Hibernate Object/Relational Mapping (ORM) EJB Permanence 0 引言 随着internet的发展,应用服务程序已经从集中式、C/S模式过渡到B/S、分布式模式;无论是用户或是供应商都迫切希望缩短开发周期、提高开发效率,Hibernate应运而生。 1 Hibernate简介 Hibernate是一个面向Java环境的对象/关系数据库映射工具。对象/关系数据库映射(Object/Relational Mapping , ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型中去。 Hibernate不仅提高Java类到数据库的映射,还提供数据查询和获取数据的方法。Hibernate在英语中的意思是“冬眠”,顾名思义它使得商务逻辑的开发和数据库最大程度地分离,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。Hibernate的目标是解放开发者通常与数据持久化相关的编程任务的95%。对于那些在基于Java的中间层应用中,它们实现面向对象的业务模型和商业逻辑的应用,Hibernate是很有用的。 图1是Hibernate的体系结构图,从图中可以Array看到,系统为3层B/S模式,应用程序在客户端运 行将持久化的对象交由Hibernate。Hibernate通过 properties属性设置和XML Mapping实现商务逻 辑,调用和存储低层数据库后将返回的结果送给 客户端。 Hibernate对每一种数据库都有对应的 Dialect进行操作优化,从而提高它在各种情况 下的效率。目前,它的版本为3.0、支持的数据 库有Oracle、DB2、MySQL、PostgreSQL、Sybase,Interbase、Pointbase、Microsoft SQL Server、

(最新)JSF+Spring+Hibernate的实例讲解

JSF+Spring+Hibernate的实例讲解 使用JSF建立一个真实的Web应用程序不是没有意义的任务,这篇文章介绍了如何将JSF与Sping Framework和Hibernate集成,并且给出了使用这些技术建立这个真实的Web应用程序的最佳实践和设计指导 JavaServer Faces(JSF)技术是J2EE应用程序的一个新的用户接口框架,它非常适合基于 MVC(Model-View-Controller)体系结构的应用程序。已经有大量的文章介绍JSF。然而,很多文章都是站在理论研究的层面上,没有挑战一个真实的企业开发。很多问题没有解决,例如,JSF怎样全面适合MVC体系结构?JSF如何与其他JAVA框架集成?业务逻辑应该放在JSF的backing beans里面吗?怎样处理JSF里面的安全问题?最重要的是你怎样使用JSF建立一个真实的Web应用程序? 这篇文章涉及所有这些问题。它向你展示如何集成其他特定的Java框架,Spring Framework和Hibernate,它示范怎样去创建一个叫JCatalog的Web应用程序,一个在线的产品目录系统。这篇文章使用JCatalog例子,介绍了Web应用程序设计的每一个阶段,包括业务需求收集,分析,技术选择,高层体系结构和详细设计。这篇文章论述了JCatalog里面好的和不好的技术,示范了应用程序设计中一些关键方面的方法和步骤。 这篇文章是写给正在从事基于J2EE Web应用程序的Java架构师,开发者,它不是对JSF、Spring Framework和Hibernate的入门教程。如果您对这些领域不熟悉,请参考文章最后的资源链接。 例子应用程序的功能需求 这篇文章的例子应用程序JCatalog是一个真实的Web应用程序,例子足够现实是为了决定应用程序架构而进行意味深长的讨论的基础。我通过介绍JCatalog项目的需求开始。我在这里谈到后面贯穿于整个文章的内容是为了演示技术选择和体系结构设计。 设计Web应用程序的第一步是收集系统的功能需求,这个例子应用程序是一个典型的电子商务应用系统。用户能浏览产品目录和查看产品细节,管理员能管理产品目录。功能还可以增加,举例来说,为了开发一个成熟的电子商务系统,可以添加库存管理和订单处理的功能。 用例 用例分析被用于去访问例子应用程序的功能需求,图1是应用程序的用例图。

javaEE实验报告

科技大学 《JAVAEE框架开发技术》 实验报告 学院:计算机科学与技术学院 专业及班级:软件工程1202班 学号: 1208010212 :_ 黄子斌

2015年12 目录 实验一 struts基础实验 (3) 1. 实验类型 (3) 2. 实验目的 (3) 3. 实验要求 (3) 4. 实验容 (3) 1. Web.xml文件的配 (3) 2. struts.xml文件配置 (4) 3. Action的实现 (4) 4. 运行结果 (6) 实验二持久化层hibernate (6) 1. 实验类型 (6) 2. 实验目的 (6) 3. 实验要求 (6) 4. 实验容 (7) 1. hibernate.cfg.xml文件配置 (7) 2. 实体类和映射文件 (7) 3. 运行结果 (10) 实验三 SSM整合实验 (10) 1. 实验类型 (10) 2. 实验目的 (10) 3. 实验要求 (11) 4. 实验容 (11) 1. applicationContext.xml文件配置 (11) 2. struts.xml 文件配置 (12) 3. 工程代码结构分析 (13) 4. 运行结果 (14) 实验总结 (15)

实验一 struts基础实验 1.实验类型 验证型 2.实验目的 掌握Struts2开发环境的搭建;理解Struts 2工作流程;掌握Struts 2 的web.xml 文件的配置;掌握config_browser插件的使用。 3.实验要求 搭建Struts 2的开发环境;实现用户登录;使用log4j输出调试信息。 4.实验容 1.Web.xml文件的配 在该文件中主要配置默认启动的jsp界面,还有filter过滤器。使用Apache的StrutsPrep areAndExecuteFilter类进行拦截。 javaweb16ValidateDemo index.jsp struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFi lter struts2

Struts2+Hibernate架构技术教程课后参考答案

第1章Struts2框架技术入门 1.5 习题 1.5.1 选择题 1.D 2.A 3.C 4.B 5.B 1.5.2 填空题 1.MVC 2.Struts1和WebWork 3.IBM 4. FilterDispatcher 5.JSP、Struts2标签 1.5.3 简答题 1.简述MVC设计模式的工作流程。 答:MVC设计模式工作流程是: (1)用户的请求(V)提交给控制器(C); (2)控制器接受到用户请求后根据用户的具体需求,调用相应的JavaBean或者EJB(M部分)来进行处理用户的请求; (3)控制器调用M处理完数据后,根据处理结果进行下一步的调转,如跳转到另外一个页面或者其他Servlet。 2.简述Struts2的工作原理。 答:Struts2中使用拦截器来处理用户请求,从而允许用户的业务控制器Action与Servlet分离。用户请求提交后经过多个拦截器拦截后交给核心控制器FilterDispatcher处理,核心控制器读取配置文件struts.xml,根据配置文件的信息指定某一个业务控制器Action(POJO类)来处理用户数据,业务控制器调用某个业务组件进行处理,在处理的过程中可以调用其他模型组件共同完成数据的处理。Action处理完后会返回给核心控制器FilterDispatcher一个处理结果,核心控制器根据返回的处理结果读取配置文件struts.xml,根据配置文件中的配置,决定下一步跳转到哪一个页面。 一个客户请求在Struts2框架中处理的过程大概有以下几个步骤: (1)客户提交请求到服务器; (2)请求被提交到一系列的过滤器过滤后最后到FilterDispatcher; FilterDispatcher是核心控制器,是基于Struts2中MVC模式的控制器部分; (3)FilterDispatcher读取配置文件struts.xml,根据配置信息调用某个Action来处理客户请求; (4)Action执行完毕,返回执行结果,根据struts.xml的配置找到对应的返回结果。

struts2+spring3+hibernate整合教程

Struts2+Spring3+hibernate3整合 (2011年7月末,最新) 上次下载了一个教程,上面写着:“献给我亲爱的老婆!”(羡慕不已)。想了想,我没老婆,难道没什么好写了!不难… 献给我暗恋过的每一个女人!(嘿嘿…) 如果在你遇到的女生中有一个幽默豁达的女生,不要犹豫,追上去,就娶她了!

一,需要的框架包 二,建立project,添加相应的.jar文件(重点) 1,eclipse中建立dynamic web project,这里是ssh_integrate_0100。 2,src中创建需要的类,这里以一个域模型为user的例子说明。(现在建立这些类,可以方便我们在搭建时候随时测试!) User.java IUserDao.java

UserDaoImpl.java IUserService.java UserServiceImpl.java

3,拷贝spring-framework-3.1.0\dist目录下的所有jar包,注意有一个不是jar的文件,当然拷过去也没事。 4,拷贝spring运行中需要的其他jar文件,主要是 https://www.sodocs.net/doc/c33778395.html,mons-logging,可以从spring-framework-3.0.2.RELEASE-dependencies 中找到。 ii.Aspectjrt.jar和aspect-waver.jar,可以从spring-framework-2.5.6-with-dependencies/lib/aspectj下面找到(不知道为什 么,spring-framework-3.0.2.RELEASE-dependencies中没有aspectjrt的jar 包) iii.aopalliance.Jar,apache-dbcp.jar,apache-pool.jar,可以从spring-framework-3.0.2.RELEASE-dependencies中找到。 5,建立beans.xml,这里使用的是annotation和component-scan,这样配置可以大大简化配置,所以是best-practice,其他配置请参考spring文档。

相关主题