- 浏览: 195957 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
atgoingguoat:
Spring Cloud 现状目前,国内使用 Spring C ...
SpringCloud2 从入门 -
zssapple:
taskList.jsp 中的问题解决:if(${sessio ...
JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子 -
793059909:
很详细
Jquery+Spring3+Struts2+Ibatis3框架源代码工程(含权限) -
aa00aa00:
一个中国移动的系统,呵呵,报错来的,现在调试好了
Jquery+Spring3+Struts2+Ibatis3框架源代码工程(含权限) -
小fi(FD):
楼主有考虑过用非关系型数据库实现吗?如果用非关系型数据库,对于 ...
动态表单分析
在 Java Web 开发应用中,Hibernate可以作为应用程序的数据访问层。
这里以一个简单用户注册用例来说明如何开发一个Hibernate的应用程序。
该例子的需求:把注册页面输入的用户名、密码、性别、年龄方面的信息存入数据库中。
如果采用经典的MVC模式的话,那么各层的构建如下:
控制层:RegisterServlet.java
模型层/数据访问层:基础类HibernateSessionFactory.java、持久化类Register.java、
配置文件hibernate.cfg.xml、映射文件register.hbm.xml等等
数据库层:采用MySQL数据库,数据表t_register
下面分步来构建这个Hibernate应用程序。
|
2、创建视图层页面
清单1:register.jsp
|
清单2:reply.jsp
|
3、设计持久化类
对应于数据库中表项。
清单3:Register.java
|
4、设计Hibernate配置文件
清单4:hibernate.cfg.xml
|
5、设计映射文件
数据库表到Java类数据项的映射
清单5:register.hbm.xml
|
6、设计Hibernate的基础类HibernateSessionFactory.java
HibernateSessionFactory.java包含了Configuration实例、SessionFactory实例和Session实例的生成函数,
这样应用程序就可以直接调用HibernateSessionFactory来生成Session实例,不必再重复编写Configuration实例、
SessionFactory实例和Session实例的生成代码了。
清单6:HibernateSessionFactory.java
|
7、设计控制类
从页面提取数据,然后调用HibernateSessionFactory通过Hibernate机制将数据插入到数据库中。
清单7:RegisterServlet.java
|
8、配置web.xml
清单8:web.xml
|
hibernate框架简介
一 历史与背景
1 应用程序的分层体系结构
随着计算机应用软件的发展,应用程序逐渐由单层体系结构发展为多层体系结构。其中,三层结构是目前典型的一种应用软件结构,如图1左。
表述层:提供与用户交互的界面,如GUI(图形用户界面),web页面等;
业务逻辑层:负责各种业务逻辑,直接访问数据库,提供对业务数据的保存、更新、删除和查询操作;
数据库层:负责存放管理应用的持久性业务数据
三层结构的特点是:所有下层向上层提供调用的接口,具体实现细节对上层透明。层与层之间存在自上而下的依赖关系,即上层会访问下层的API,但下层不依赖于上层。
2 持久化层(如图1右)
(1)什么叫持久化?
在图1右中,分离出的持久化层封装了数据访问细节,为业务逻辑层提供了面向对象的API。
持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。
(2)什么叫持久层?
持久层(Persistence Layer),即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者和数据实体相关联。
(3)为什么要持久化?增加持久层的作用是什么?
数据库的读写是一个很耗费时间和资源的操作,当大量用户同时直接访问数据库的时候,效率将非常低,如果将数据持久化就不需要每次从数据库读取数据,直接在内存中对数据进行操作,这样就节约了数据库资源,而且加快了系统的反映速度。
增加持久化层提高了开发的效率,使软件的体系结构更加清晰,在代码编写和系统维护方面变得更容易。特别是在大型的应用里边,会更有利。同时,持久化层作为单独的一层,人们可以为这一层独立的开发一个软件包,让其实现将各种应用数据的持久化,并为上层提供服务。从而使得各个企业里做应用开发的开发人员,不必再来做数据持久化的底层实现工作,而是可以直接调用持久化层提供的API。
(4)目前在持久化层领域,实现模式有以下几种:
A 业务逻辑和数据访问耦合
B 主动域对象模式
C ORM模式
D JDO模式
E CMP模式
3 ORM介绍
ORM(Object Relational Mapping),即对象关系映射。
指以O/R原理设计的持久化框架(Framework),包括 O/R机制、SQL自生成、事务处理和Cache管理等。
ORM的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。
常用的ORM中间件有:
Apache OJB (http://db.apache.org/ojb/)
Cayenne (http://objectstyle.org/cayenne/)
Jaxor (http://jaxor.sourceforge.net)
Hibernate (http://www.hibernate.org)
iBatis (http://www.ibatis.com)
jRelationalFramework (http://ijf.sourceforge.net)
mirage (http://itor.cq2.org/en/oss/mirage/toon)
SMYLE (http://www.drjava.de/smyle)
TopLink (http://otn.oracle.com/products/ias/toplink/index.html)
其中 Hibernate 的轻量级 ORM 模型逐步确立了在 Java ORM 架构中领导地位,甚至取代复杂而又繁琐的 EJB 模型而成为事实上的 Java ORM 工业标准。而且其中的许多设计均被 J2EE 标准组织吸纳而成为最新 EJB 3.0 规范的标准。
二 Hibernate定义
Hibernate是一种Java语言下的对象关系映射解决方案。 它是一种自由、开源的软件。它用来把对象模型表示的对象映射到基于SQL 的关系模型结构中去,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。
三 Hibernate的作用
Hibernate 不仅管理Java 类到数据库表的映射(包括从Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL 和JDBC 处理数据的时间。
它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。
四 Hibernate的应用
Hibernate对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,它既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。最具革命意义的是,Hibernate可以在应用EJB(Enterprise JavaBeans是Java应用于企业计算的框架)的J2EE架构中取代CMP,完成数据持久化的重任。
五 Hibernate API简介
1 Hibernate API中的接口可以分为以下几类:
(1) 提供访问数据库的操作的接口,包括session、Transaction、Query接口;
(2) 用于配置Hibernate的接口,Configuration;
(3) 间接接口,使应用程序接受Hibernate内部发生的事件,并作出相关的回应,包括:Interceptor、Lifecycle、Validatable;
(4) 用于扩展Hibernate功能的接口,如UserType、CompositeUserType、IdentifierGenerator接口。
Hibernate内部还封装了JDBC、JTA(Java Transaction API)和JNDI(Java Naming And Directory Interface)。其中,JDBC提供底层的数据访问操作,只要用户提供了相应的JDBC驱动程序,Hibernate可以访问任何一个数据库系统。JTA和JNDI使Hibernate能够和J2EE应用服务器集成。
2 Hibernate的核心接口框图
六 Hibernate的优缺点
(1)优点:
a.Hibernate 使用 Java 反射机制 而不是字节码增强程序来实现透明性。
b.Hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。
c. 它支持各种关系数据库,从一对一到多对多的各种复杂关系。
(2)缺点:
Hibernate限制您所使用的对象模型。例如,一个持久性类不能映射到多个表。
发表评论
-
SpringCloud2 从入门
2019-03-30 09:46 835首先初步认识下它: ... -
JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子
2017-09-22 14:58 929JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的 ... -
Maven3的POM.xml元素说明详解
2017-09-20 16:53 980Maven3的POM.xml元素说明 POM代表项目对象 ... -
MyBatis的foreach语句详解
2014-02-10 09:55 892foreach的主要用在构建in ... -
JSP获取所有参数并追加写入文件
2013-12-20 14:53 1141JSP获取所有参数并追加写入文件 <% ... -
Jquery+Spring3+Struts2+Ibatis3框架源代码工程(含权限)
2012-07-19 15:02 3738开发框架选择 Jquery1.6 + strust2.1 ... -
java开源-项目管理工具-java源代码
2012-03-17 15:11 3289因工作需要,想找些项目管理工具,找了一些,都觉得不 ... -
java 常用工具包(自己拓展)
2010-11-16 23:05 2881做了六七年的程序员,突然间发现自己常常去网上找工具类.怎么不自 ... -
请管理员删除此贴
2010-05-18 22:38 200rapid-framework一般的人应该不会陌生,国产的, ... -
java5, java6 的新特性
2010-05-09 22:36 1365下面简单的列出Java5和Ja ... -
Rapid-framework代码自动生成器
2010-05-08 22:36 1591rapid-framework是一个以spring为核心的we ... -
ibatis3 简单示例
2010-05-06 14:36 3173ibatis3 已经发布了。跟ib ... -
Dwr入门例子(附源代码下载-JBuilder2006工程)完成
2010-05-03 15:51 1527Dwr+ibatis+oracle9i入门例子(附源代码下载- ... -
dwr+ibatis+mysql +jsp 权限管理平台源代码
2010-04-15 11:49 2017JBuilder开发的一个权限管理平台源代码,适用于常见的 ... -
java cms MyEclipse6.0 工程代码
2010-04-07 14:46 2424JEECMS是国内Java版开源网站内容管理系统(java c ... -
ibatis MyEclipse 代码 源代码 分解
2010-01-28 17:03 1583前面,已经发个工程。现在讲下里面代码的具体功能和作用。 我也 ... -
java读取文件及文件流
2010-01-28 16:10 2691package cn.xx.io.util; imp ...
相关推荐
5. **实体类图**:显示实体类之间的关系,以图形化方式理解数据模型,有助于设计和优化数据库架构。 6. **部署辅助**:整合到 Eclipse 的构建和部署流程中,使得 Hibernate 应用的部署更加顺畅。 描述中提到的博客...
通过以上详细分析,可以清晰地了解到 Hibernate 3.x 版本中关于快速启动、基础介绍、架构设计、配置管理、持久化类定义以及基本 ORM 映射的核心知识点。这些内容对于初学者理解和掌握 Hibernate 的基本用法至关重要...
- **描述**:“这是Hibernate的中文官方文档,是最新的版本Hibernate 3.6,适合作为Hibernate使用者的参考手册和入门帮助文档。”这句话进一步明确了文档的内容为Hibernate 3.6版本的官方指南,适合新用户作为学习...
12.3 使用Hibernate操作数据库的示例 12.3.1 创建数据库表 12.3.2 编写表对应的JavaBean 12.3.3 编写JavaBean对应的Xml 12.3.4 编写Hibernate的配置文件 12.3.5 编写并验证测试程序 12.4 Hibernate的配置文件 12.4.1...
"Hello, World"是学习任何新语言或技术的入门示例,jbpm4helloworld可能是一个简单的JBPM4流程示例。这个项目可能包含一个基础的工作流定义,展示了如何创建、部署和运行一个基本的工作流程。开发者可以通过这个例子...
12.3 使用Hibernate操作数据库的示例 12.3.1 创建数据库表 12.3.2 编写表对应的JavaBean 12.3.3 编写JavaBean对应的Xml 12.3.4 编写Hibernate的配置文件 12.3.5 编写并验证测试程序 12.4 Hibernate的配置文件 12.4.1...
12.3 使用Hibernate操作数据库的示例 12.3.1 创建数据库表 12.3.2 编写表对应的JavaBean 12.3.3 编写JavaBean对应的Xml 12.3.4 编写Hibernate的配置文件 12.3.5 编写并验证测试程序 12.4 Hibernate的配置文件 12.4.1...
### Struts2入门教程知识点概览 #### 一、Struts2简介 - **起源与发展**:Struts2并非新生事物,而是建立在Struts1和WebWork基础上的一个Web应用框架。它融合了两者的优势,提供了更为强大的功能支持。 - **设计...
### Spring入门知识点详解 #### Spring框架概述 - **Spring**是一个开源框架,旨在简化企业级应用的开发。作为一款轻量级的Java平台框架,Spring提供了广泛的解决方案,从基础的依赖注入(DI)到复杂的事务管理和...
在本入门示例中,我们将探讨如何使用Struts来创建一个简单的登录系统。这个"StrutsLoginDemo"项目将帮助初学者理解Struts的核心概念和工作流程。 首先,我们需要了解Struts的工作原理。Struts采用MVC(Model-View-...
以上是对韩顺平Java从入门到精通视频教程学习笔记的部分整理,包含了Java的基础概念、开发流程、历史背景、开发工具的选择以及简单的程序示例等内容。这些基础知识对于Java初学者来说至关重要,能够帮助他们顺利入门...
BlazeDS或LCDS是常用的服务器端技术,它们提供了AMF通道,使得Flex客户端能与Java Spring、Hibernate等框架无缝对接。 八、Flex调试和性能优化 学会使用Flex的调试工具,如Flex Builder的Debugger,可以有效地定位...
- **JFreeChart**: JFreeChart 是一个广泛使用的Java图表库,提供了多种类型的图表,如柱状图、饼图、线图和散点图等。它支持自定义颜色、样式和数据源,适用于创建复杂的静态图表。 - **JasperReports**: ...
Java作为后端开发语言,广泛应用于企业级应用开发,拥有丰富的库和框架,如Spring、Hibernate等。Java与Flex通过LCDS结合,可以实现高效的数据绑定和实时数据推送。 在本入门教程中,你将学习以下关键知识点: 1. ...
**学习资源**:提供的"Flex+++LCDS(Blazeds)+++Java+入门教程.doc"文档很可能是详细的教程,包括基本概念、安装配置、示例代码和实践指导。而"flex.war"和"blazeds.war"这两个文件则是预编译好的Flex和LCDS服务器端...
- 网上可以找到一些关于J2ME开发的教程和示例代码。 #### 三、企业级应用开发(J2EE) **定义与特点:** - **J2EE**(Java 2 Platform, Enterprise Edition)是一套标准的企业级Java开发框架,用于构建复杂的Web应用和...
- **三层架构**:本教程中的示例程序采用三层架构,即Web层、服务层和服务实现层以及数据访问层。Web层负责接收用户请求并将其转发给服务层;服务层负责业务逻辑处理;数据访问层则负责数据的存取操作。 - **流程...