当前位置:文档之家› 关于hibernate框架的简介

关于hibernate框架的简介

关于hibernate框架的简介
关于hibernate框架的简介

关于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 OR M介绍

ORM(Object Relational Mapping),即对象关系映射。

指以O/R原理设计的持久化框架(Framework),包括O/R机制、SQL自生成、事务处理和Cache管理等。

ORM的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。

常用的ORM中间件有:

Apache OJB (https://www.doczj.com/doc/341563788.html,/ojb/)

Cayenne (https://www.doczj.com/doc/341563788.html,/cayenne/)

Jaxor (https://www.doczj.com/doc/341563788.html,)

Hibernate (https://www.doczj.com/doc/341563788.html,)

iBatis (https://www.doczj.com/doc/341563788.html,)

jRelationalFramework (https://www.doczj.com/doc/341563788.html,)

mirage (https://www.doczj.com/doc/341563788.html,/en/oss/mirage/toon)

SMYLE (http://www.drjava.de/smyle)

TopLink (https://www.doczj.com/doc/341563788.html,/products/ias/toplink/index.html)

其中 Hibernate 的轻量级OR M 模型逐步确立了在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 JavaB eans是Java应用于企业计算的框架)的J2EE架构中取代CMP,完成数据持久化的重任。

五Hibernate API简介

1 Hibernate API中的接口可以分为以下几类:

(1)提供访问数据库的操作的接口,包括session、Transaction、Query接口;

(2)用于配置Hibernate的接口,Configuration;

(3)间接接口,使应用程序接受Hibernate内部发生的事件,并作出相关的回应,包括:Interceptor、Lifecycle、Validatable;

(4)用于扩展Hibernate功能的接口,如UserType、C ompositeUserType、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限制您所使用的对象模型。例如,一个持久性类不能映射到多个表。

Hibernate框架如何实现ORM

Hibernate框架OR M的实现原理,文章从ORM、Hibernate的定义入手,通过对数据库配置文件的详细解析来阐述OR M的实现原理。

1.什么是ORM

ORM的全称是Object Relational Mapping,即对象关系映射。它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。

2.什么是Hibernate

对于Hibernate的称呼有很多,比如工具、技术、框架以及解决方案等,这些都可以,重要的是大家要知道它的作用。在这里我习惯性称它为框架,它是一种能实现ORM的框架。能实现ORM这个功能的框架有很多,Hibernate可以说是这些框架中最流行、最受开发者关注的,甚至连JBoss公司也把它吸收进来,利用它在自己的项目中实现ORM功能。

3.ORM的实现原理

现在在Java领域大家对Hibernate的讨论很多,比如它的优缺点、如何应用、错误如何解决以及把它和Stru ts/Spring等框架相结合作为整个系统的解决方案。在这里我想和大家探讨一些更深层次的话题,那就是Hibernate是如何实现ORM的功能?如果让我们自己开发一款实现ORM功能的框架需要怎么做?其实这些问题就是围绕着一个词,那就是“映射”,如果我们知道如何实现这种映射那么我们也能够开发出自己的一款ORM框架。会使用Hibernate的开发人员都知道,在使用它实现ORM功能的时候,主要的文件有:映射类(*.java)、映射文件(*.hb m.xml)以及数据库配置文件(*.properties或*.cfg.xml),它们各自的作用如下。

⑴映射类:它的作用是描述数据库表的结构,表中的字段在类中被描述成属性,将来就可以实现把表中的记录映射成为该类的对象。

⑵映射文件:它的作用是指定数据库表和映射类之间的关系,包括映射类和数据库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对应关系等。

⑶数据库配置文件:它的作用是指定与数据库连接时需要的连接信息,比如连接哪中数据库、登录用户名、登录密码以及连接字符串等。

在这三种主要的文件中,映射类为普通Java源文件、映射文件为XML格式、数据库配置文件为Properties格式或者是XML 格式。想理解“映射”首先我们需要知道如何解析这三种文件,即解析XML格式文件、解析Properties格式文件和解析Java 类文件。

下面我们来分别探讨一下如何实现这些文件的解析。

⑴如何解析XML文件

前面我们说过映射文件是XML格式,数据库配置文件也可以是XML格式,因此如果能解析XML文件我们就可以获取这两个文件的信息。XML文件格式我简单做下介绍,比如tom这句就是一个XML格式的描述,name代表节点,节点必须有开始标记和结束标记,在开始标记中我们可以添加一些属性的声明比如sex。解析XML的技术可以分为两类那就是SAX和DOM,这两种方式的差别和优缺点大家可以上网查阅或者我们会在以后的文章中提出,请大家关注。

实现解析XML文件的功能很方便,我们可以通过下载第三方的一些工具包如xml-apis.jar和xercesImpl.jar等,也可以使用JDK自带的工具类DocumentBuilderFactory、DocumentBuilder、Docu ment、Element等等,大家可以通过API文挡查阅这些类的说明。通过这些类我们可以把XML文件的信息读入内存并通过类中的某些方法获取指定节点的名字、值、属性名、属性值这些信息。

⑵解析Properties文件

数据库配置文件可以是XML格式也可以是Properties格式,Properties文件一般采用“属性名=属性值”的形式描述信息。如果配置文件采用Properties文件描述,我们就需要想办法解析这种类型的文件了。想解析Properties文件大家就需要熟悉Properties这个类了,这个类有一些常用方法比如,load()加载指定文件并读取文件中的属性信息,PropertyNames()返回所有属性名,getProperty()返回指定属性名的属性值。通过解析Properties文件我们可以得到连接数据库必要的信息,然后通过底层JDBC技术与数据库建立连接。

⑶解析Jav a类文件

通过解析映射文件和数据库配置文件我们可以建立数据库的连接,可以得到映射类的名字、属性名、数据库表名、字段名以及类型等信息。要把数据库中表的数据映射成为对象,首先需要把表中的记录取出,然后将每个字段值给映射类对象的每个属性,这个赋值过程要调用对象中的set方法。我们现在通过映射文件只知道类名和属性名,如何根据类名和属性名调用相应的set和get方法,是一个关键问题。

在Java中有一种机制叫反射机制,使用这种机制我们可以得到类的信息,包括类只用的修饰符、方法、属性、继承的父类以及实现接口等信息。反射机制相关的类有Class、Field、Method以及Constructor等。通过Class的getFields()、getMethods()

和getConstructors()方法得到相应的属性、方法和构造方法。通过Field类的getName()、getType()和getModifiers()方法得到相应的属性名、属性类型、属性修饰符信息。通过Method类getReturnType()可以获取方法的返回类型,invoke()方法可以根据给定的方法名和参数值执行对象中对应的方法。我们可以首先通过以上方法获取类中的属性名,然后拼写成setXXX 和getXXX方法名,最后根据方法名执行对应的方法,将数据库数据加载到对象中。

此外要实现Hibernate机制还会涉及到一个技术点,那就是如何获取数据库的相关信息。要实现这个功能,就需要大家了解JDBC的DataBaseMetaData类和ResultSetMetaData类,通过这两个类的方法我们就可以获取数据库表的字段名、类型、大小等相关信息。

在这里我只是给大家把实现ORM功能的一些关键技术提了出来,通过上面介绍大家对ORM机制应该有个大概了解,比如通过解析数据库配置文件获取数据库连接信息并建立连接,通过解析映射文件可以获取映射类名、属性名、表名以及字段名等信息,得到名字后通过反射机制可以得到映射类信息,调用构造方法创建对象,调用每个属性的set方法给对象设值完成数据的装载。Hibernate就是采用这个过程来实现OR M的,当然Hibernate还使用了事务控制、缓存控制等很多技术。

hibernate架构图

.Hibernate 架构图 Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC 进行了非常轻量级的对象封装,使得Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate 可以应用在任何使用JDBC 的场合,既可以在Java 的客户端程序使用,也可以在Servlet/JSP 的Web 应用中使用,最具革命意义的是,Hibernate 可以在应用EJB 的J2EE 架构中取代CMP ,完成数据持久化的重任。 Hibernate 的核心接口一共有5 个,分别为:Session 、SessionFactory、Transaction 、Query 和Configuration 。这5 个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。 ·Session 接口:Session 接口负责执行被持久化对象的CRUD 操作(CRUD 的任务是完成与数据库的交流,包含了很多常见的SQL 语句。) 。但需要注意的是Session 对象是非线程安全的。同时,Hibernate 的session 不同于JSP 应用中的HttpSession 。这里当使用session 这个术语时,其实指的是Hibernate 中的session ,而以后会将HttpSesion 对象称为用户session 。 ·SessionFactory 接口:SessionFactory 接口负责初始化Hibernate 。它充当数据存储源的代理,并负责创建Session 对象。这里用到了工厂模式。需要注意的是SessionFactory 并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory 就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory 。

整合SSH三大框架介绍

一.在MyEclipse里先建立一个Web project 的项目,选最新版本的java ee。 二.添加struts2框架支持 1.引入struts2必须得几个jar包,放在WebRoot->WEB-INF->lib 目录下。 2.将WEB应用部署到tomcat服务器上:找到tomacat的安装目录Tomcat6.x\apache-tomcat-6.0.33\conf,打开其中的server.xml文件,在文件末尾上面加入例如 这样的句子,其中path的值为你需要访问网站的上下文,docBase的值为该web项目的WebRoot所在的目录,最后一个readloadable最好选true。 3.在WebRoot->WEB-INF->web.xml中加入struts2的过滤

器将部署好的应用纳入到struts2的管辖范围类,具体代码如下 struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPre pareAndExecuteFilter struts2 /* 4.在web项目的src目录下,建一个struts.xml文件,这里是处理struts整个流程的文件。在其中加入 上面的name随便取,extends绝对不能变。 5.这样以后,启动tomcat服务器看看能不能正常启动,如果正常启动后,在浏览器上访问,http://localhost/上下文/index.jsp看能不能进入,若能进入则表示struts2的框架已经成功加到web项目中了,可以开始下一步了。

Struts2和hibernate框架整合实现简单的注册登陆功能

Struts2和hibernate框架整合实现简单 的注册登陆功能 项目结构: LoginAction.Java package action; import https://www.doczj.com/doc/341563788.html,er; import https://www.doczj.com/doc/341563788.html,erDAO; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; private User user; public User getUser() { return user;} public void setUser(User user) { https://www.doczj.com/doc/341563788.html,er = user;} public String execute()throws Exception{ if((user=new UserDAO().LoginCheck(user.getUsername(), user.getPassword(),user.getRole()))==null){

return ERROR; } if(user.getRole()=="1"){ return "admin"; }else{ return SUCCESS;} } } RegistAction.java package action; import https://www.doczj.com/doc/341563788.html,er; import https://www.doczj.com/doc/341563788.html,erDAO; import com.opensymphony.xwork2.ActionSupport; public class RegistAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; private User user=null; private String repassword; public String getRepassword() { return repassword; } public void setRepassword(String repassword) { this.repassword = repassword; } //UserDAO userDao=new UserDAO(); @Override public String execute() throws Exception { User selectUser=new User(); if((selectUser=new UserDAO().selectRegist(user.getUsername()))==null){ User u=new User(); u.setUsername(user.getUsername()); u.setPassword(user.getPassword()); new UserDAO().saveRegist(u); return "success"; }else{ return "error";

hibernate框架必问的面试题

108.为什么要使用 hibernate? hibernate 是对 jdbc 的封装,大大简化了数据访问层的繁琐的重复性代码。 hibernate 是一个优秀的 ORM 实现,很多程度上简化了 DAO 层的编码功能。 可以很方便的进行数据库的移植工作。 提供了缓存机制,是程序执行更改的高效。 109.什么是 ORM 框架? ORM(Object Relation Mapping)对象关系映射,是把数据库中的关系数据映射成为程序中的对象。 使用 ORM 的优点:提高了开发效率降低了开发成本、开发更简单更对象化、可移植更强。 115.hibernate 中如何在控制台查看打印的 SQL 语句? 在 Config 里面把 hibernate. show_SQL 设置为 true 就可以。但不建议开启,开启之后会降低程序的运行效率。 116.hibernate 有几种查询方式? 三种:hql、原生 SQL、条件查询 Criteria。 117.hibernate 实体类可以被定义为 final 吗? 实体类可以定义为 final 类,但这样的话就不能使用 hibernate 代理模式下的延迟关联提供性能了,所以不建议定义实体类为 final。 118.在 hibernate 中使用 Integer 和 int 做映射有什么区别? Integer 类型为对象,它的值允许为 null,而 int 属于基础数据类型,值不能为 null。 119.hibernate 是如何工作的? 读取并解析配置文件。 读取并解析映射文件,创建 SessionFactory。 打开 Session。 创建事务。 进行持久化操作。 提交事务。 关闭 Session。 关闭 SessionFactory。 120.get()和 load()的区别? 数据查询时,没有 OID 指定的对象,get() 返回 null;load() 返回一个代理对象。 load()支持延迟加载;get() 不支持延迟加载。

Struts+Spring+Hibernate框架搭建

整合SSH框架 整合框架版本:hibernate-distribution-3.6.0.Final-dist + spring-framework-2.5.6.SEC01-with-dependencies + struts-2.1.8.1 一、搭建工具 Windows 、Tomcat 6.0+ 、MyEclipse、SQLServer2008 R2 、Google 二、创建工程 新建WEB项目工程(MyEclipse),包含web.xml配置文件。 三、添加框架环境Junit4 右击新建的项目,选择Build Path —> Add Library —> Junit —> 选择Junit4 —> 确定完成单元测试的添加。 四、添加框架环境Struts2 1.解压struts- 2.1.8.1 ,如下图所示: 可在apps文件里,随机选择一个.war文件解压,到WEB-INF→lib下的基础jar文件:

复制黏贴添加到项目工程的lib下。也可将lib下的全部jar(71个)都复制到项目中来,不过很多用不到。我们崇尚即用即加的原则…… 2. 配置struts.xml和web.xml文件,如下: web.xml: ItcastOA struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndE xecuteFilter struts2 /* index.html index.htm index.jsp default.html default.htm default.jsp struts.xml:

Struts、Spring、Hibernate三大框架的原理和优点

Struts的原理和优点. Struts工作原理 MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。MVC的工作原理,如下图1所示: Struts 是MVC的一种实现,它将Servlet和JSP 标记(属于J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的工作原理, 视图:主要由JSP生成页面完成视图,Struts提供丰富的JSP 标签库:Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。 控制:在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。ActionServlet是一个通用的控制组件。这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。另外控制组件也负责用相应的请求参数填充Action From(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。动作类实现核心商业逻辑,它可以访问java bean 或调用EJB。最后动作类把控制权传给后续的JSP 文件,后者生成视图。所有这些控制逻辑利用Struts-config.xml文件来配置。 模型:模型以一个或多个java bean的形式存在。这些bean分为三类:Action Form、Action、JavaBean or EJB。Action Form通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等。 流程:在Struts中,用户的请求一般以*.do作为请求服务名,所有的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,由ActionBean完成相应的业务操作,如文件操作,数据库操作等。每一个*.do均有对应的FormBean名称和ActionBean名称,这些在Struts-config.xml中配置。 核心:Struts的核心是ActionSevlet,ActionSevlet的核心是Struts-config.xml。 Struts优缺点 优点: 1.开源软件,能更深入的了解其内部实现机制。 2.Taglib标记库,灵活动用,能大大提高开发效率。 3.页面导航使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。

Struts+Hibernate+Spring+三个框架简介

Struts 是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Java Servlet和JSP构建Web应用的一项非常有用的技术。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,因而吸引了众多的开发人员的关注。 首先事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使用了Command 模式,每个继承Action的子类都必须实现一个方法execute。 struts重要的表单对象ActionForm是一种对象,它代表了一种应用,这个对象中至少包含几个字段,这些字段是Jsp页面表单中的input字段,因为一个表单对应一个事件,所以,当我们需要将事件粒度细化到表单中这些字段时,也就是说,一个字段对应一个事件时,单纯使用Struts就不太可能,当然通过结合JavaScript也是可以转弯实现的。 Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。 Struts框架可分为以下四个主要部分: 1、模型(Model),本质上来说在Struts中Model是一个Action类(这个会在后面详细讨论),开发者通过其实现商业逻辑,同时用户请求通过控制器(Controller)向Action的转发过程是基于由struts- config.xml文件描述的配置信息的。 2、视图(View),View是由与控制器Servlet配合工作的一整套JSP定制标签库构成,利用她们我们可以快速建立应用系统的界面。 3、控制器(Controller),本质上是一个Servlet,将客户端请求转发到相应的Action类。

Struts框架和Hibernate框架的整合完整版介绍

Struts框架和Hibernate框架的整合 1、首先写一个student的实体类,命名为:StudentEntity.java package com.liu.student.entity; /** * 数据库表的映射实体类文件 * @author Calasin */ public class StudentEntity { private String s_id;// 学号 private String s_name;// 姓名

private int s_age;// 年龄 public String getS_id() { return s_id; } public void setS_id(String s_id) { this.s_id = s_id; } public String getS_name() { return s_name; } public void setS_name(String s_name) { this.s_name = s_name; } public int getS_age() { return s_age; } public void setS_age(int s_age) { this.s_age = s_age; } public String toString() { return"StudentEntity [s_id="+ s_id+ ", s_name="+ s_name + ", s_age=" + s_age + "]"; } } 2、接着写student实体类StudentEntity的配置文件:StudentEntity.hbm.xml

Java框架介绍

Java框架介绍

二零一五年九月 目录 一技术简介3 1.1 总体介绍3 1.2 Maven介绍3 1.3 Spring MVC介绍4 1.4 Hibernate介绍4 二配置说明5 2.1 web.xml文件5 2.2 applicationContext-resourse.xml文件6 2.3 applicationContext-service.xml文件6 2.4 applicationContext-source.xml文件6 2.5 applicationContext-source.xml文件7 2.6 spring-servlet.xml文件8 2.7 pom.xml文件8 三源代结构9 3.1 整体结构9 3.2 Dao层9 3.3 Service层9 3.4 Controller层9 3.5 其他10 四业务操作流程(重要)11 4.1 操作图示11 4.2 操作实例11 五突出功能15 5.1 权限管理15

一技术简介 1.1 总体介绍 该框架总体使用Maven+SpringMVC+Hibernate。除了可以较好的进行数据交互,框架各层代码比较分明,也更加系统,基础方法都已集成,对于开发者的帮助事半功倍。 1.2 Maven介绍 maven是一个很好的项目管理或者项目构建工具。 首先是maven的“约定优于配置”,即在maven中并不是完全不可以修改的,他们只是一些配置的默认值而已。但是使用者除非必要,并不需要去修改那些约定内容。maven 默认的文件存放结构如下: /项目目录 o pom.xml 用于maven的配置文件 o/src源代码目录 ?/src/main 工程源代码目录 ?/src/main/java 工程java源代码目录 ?/src/main/resource 工程的资源目录 ?/src/main/webapp工程的jsp等前端文件目录 ?/src/test 单元测试目录 ?/src/test/java o/target 输出目录,所有的输出物都存放在这个目录下 ?/target/classes 编译之后的class文件 其次,构建项目或项目开发过程中,项目所有依赖的版本库,比如spring和hibernate相关依赖库,只需要在pom.xml增加配置信息,如果maven仓库中有该依赖文件就直接引用,没有则会从指定地址下载该依赖文件到本地仓库,供项目使用。即对于项目所有的依赖库,可以进行统一管理,不需要分别配置。 最后,maven也可以进行多项目管理,一般来说,maven要求同一个工程的所有子项目都放置到同一个目录下,每一个子目录代表一个项目,所有具体子项目的pom.xml都会继承总项目pom的内容,取值为子项目pom内容优先。

Hibernate实现(注解方式)

Hibernate实现(注解方式) 注解方式: 注解的方式与xml很很多类似: 首先是需要加入4个jar包:hibernate-commons-annotations.jar 、 hibernate-annotations.jar ejb3-persistence.jar 、 hibernate-jpa-2.0-api-1.0.1.Final.jar 下面是不同的地方: (1):hibernate.hbm.xml 文件中把引用:xxx.hbm.xml改为引用实体类: 即把: 改为: (2):获取SessionFactory方式发生了变化: 即:由SessionFactory sf = new Configuration().configure().buildSessionFactory() 改为:SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory() (3):注解方式不需要在xxx.hbm.xml把实体类与表进行映射。而采用在实体类中进行注解。 注意:(1):如果实体类属性名与表字段名不一致的时候,要么都注解在属性前,要么都注解在get方法前。不能部分注解在属性前,部分注解在方法前。 (2):如果实体类属性名与表字段名一致的时候,可以部分注解在属性前,部分注解在方法前。 (3):如果在实体类中某些属性不注解:(属性和get都不写注解),默认为表字段名与实体类属性名一致。 (4):如果实体类的某个成员属性不需要存入数据库中,使用@Transient 进行注解就可以了。即类似于:(xxx.hbm.Xml配置中的某些字段不写(就是不需要对这个成员属性进行映射)) (5):表名称可以在实体类前进行注解。 (6):所有这些注解在:javax.persistence包下。而不是在hibernate包中。 --------------------------------------------------------------------------------------------------------------------- @Entity // 表示为实体类 @Table(name="t_teacher") // 表名注解 publicclass Teacher implements Serializable { privateint id; private String username; privateint age; @Id// 表示主键 @GenericGenerator(name = "generator", strategy = "increment") @GeneratedValue(generator = "generator") // 自增长@Column(name = "id") // 类属性对应着表字段 publicint getId() { return id; } public void setId(int id) { this.id = id; }

Spring,Hibernate工作原理以及MVC结构的简介

一、spring工作原理: 1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。 2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller. 3.DispatcherServlet请请求提交到目标Controller 4.Controller进行业务逻辑处理后,会返回一个ModelAndView 5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView 对象指定的视图对象 6.视图对象负责渲染返回给客户端。 二、为什么要用spring: AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 后,公共服务(比如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。 IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词倒置所表明的,IOC 就像反过来的 JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。 Spring即使一个AOP框架,也是一IOC容器。 Spring 最好的地方是它有助于您替换对象。有了 Spring,只要用 JavaBean 属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。 三、请你谈谈SSH整合: SSH: Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts: Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。 在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发。(View:沿用JSP,HTTP,Form,Tag,Resourse ;Controller:ActionServlet, struts-config.xml,Action) Hibernate: Hibernate是一个持久层框架,它只负责与关系数据库的操作。

20171124魏博文Springmvc Hibernate框架结合使用

Springmvc Hibernate框架结合使用1、配置需要的配置文件 applicationContext-mvc.xml applicationContext.xml 需要的属性文件jdbc.properties

log4j.properties ### set log levels ### log4j.rootLogger = INFO,C,D,E ### console ### log4j.appender.C = org.apache.log4j.ConsoleAppender log4j.appender.C.Target = System.out https://www.doczj.com/doc/341563788.html,yout = org.apache.log4j.PatternLayout https://www.doczj.com/doc/341563788.html,yout.ConversionPattern = [Factory][%p][%-d{yyyy-MM-ddHH:mm:ss}]%C.%M(%L)|%m%n ### log file ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = ../logs/factory/factory.log log4j.appender.D.Append = true log4j.appender.D.Threshold = INFO https://www.doczj.com/doc/341563788.html,yout = org.apache.log4j.PatternLayout https://www.doczj.com/doc/341563788.html,yout.ConversionPattern = [Factory][%p][%-d{yyyy-MM-ddHH:mm:ss}]%C.%M(%L)|%m%n ### exception ### log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File = ../logs/factory/factory_error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR https://www.doczj.com/doc/341563788.html,yout = org.apache.log4j.PatternLayout https://www.doczj.com/doc/341563788.html,yout.ConversionPattern =[Factory][%p][%-d{yyyy-MM-ddHH\:mm\:ss}]%C.%M(%L)|%m%n

搭建hibernate框架

1. 搭建hibernate框架 1.1 导入hibernate包 /HIBERNATE_HOME/lib/required/*.jar mysql-connector-java-5.1.22-bin.jar 1.2 加入hibernate核心配置文件 /HIBERNATE_HOME/project/etc/hibernate.cfg.xml 1.3 加入针对数据库的配置 jdbc:mysql://localhost:3306/oa com.mysql.jdbc.Driver root org.hibernate.dialect.MySQLDialect true 1.4 编写实体类和映射配置文件 如: Department.hbm.xml Employee.hbm.xml Department.java Employee.java 1.5 将映射文件添加到核心配置文件(hibernate.cfg.xml)中 2. 使用hibernate 2.1 获取session public class SessionFactoryUtils { private static SessionFactory factory = null; static { Configuration cfg = new Configuration().configure(); // 新版本需要加入ServiceRegistry对象来创建SessionFactory ServiceRegistryBuilder builder = new ServiceRegistryBuilder(); builder.applySettings(cfg.getProperties()); ServiceRegistry serviceRegistry = builder.buildServiceRegistry(); // 创建会话工厂 factory = cfg.buildSessionFactory(serviceRegistry); }

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 运行和测试应用程序

Struts+Spring+Hibernate框架实用教程(SSH框架)

Struts+Spring+Hibernate整合 教程v1.0 作者: 陈文光 作者Blog: https://www.doczj.com/doc/341563788.html, 声明 本文内容根据个人所知的以及网络文章整理而成, 如有侵权, 请与本人联系. 菜鸟写的文章,难免有错误,望体谅以及给我修正 本文内容仅供参考, 不得用于商业目的. 转载请著名作者和出处. 日期: 2008-01-06

1 SSH整合理念 (3) 1.1 框架 (3) 1.2 应用层 (4) 1.2.1 表现层 (4) 1.2.2 持久层 (4) 1.2.3 业务层 (5) 1.2.4 领域模型层 (6) 1.3 整合一个简单的例子 (6) 2 Spring整合Struts (6) 3.1 三个小窍门 (6) 3.2 窍门1. 使用Spring 的ActionSupport (7) 3.3 窍门2. 覆盖RequestProcessor (8) 3.4 窍门3. 将动作管理委托给Spring (9) 3.5 拦截Struts (10) 2.5.1. 前提: (10) 2.5.2. 使用拦截器的步骤: (10) 2.5.3. 一个例子: (10) 3 Spring整合Hibernate (11) 3.1 为什么要整合? (11) 3.2 配置数据源 (11) 3.3 配置sessionfactory (13) 3.4 配置事务 (15)

1SSH整合理念 1.1框架 用java来建立一个很有价值的web 应用不是一个简单的任务。在架构这个应用时要考虑很多的因素和问题。从更高的层次来看,开发人员面临着关于如何构建用户接口,何处驻留业务逻辑,以及如何实现数据持久性这些问题。这3层都有各自的问题需要回答。而每一层又需要实现那些技术?应用如何设计来进行松散耦合并能进行灵活变更?应用架构是否允许某一层变更而不影响到其它的层次? 应用应该如何处理容器一级的服务比如事务? 在为你的应用创建一个架构之前有许多问题需要澄清。幸运的是,有很多开发者都意识到这个问题,并建立了很多框架来解决这些问题。一个良好的框架可以让开发人员减轻重新建立解决复杂问题方案的负担和精力;它可以被扩展以进行内部的定制化;并且有强大的用户社区来支持它。框架通常能很好的解决一个问题。然而,你的应用是分层的,可能每一个层都需要各自的框架。仅仅解决UI问题并不意味着你能够很好的将业务逻辑和持久性逻辑和UI 组件很好的耦合。例如,你不应该使具有JDBC代码的业务逻辑放入控制器之中,这不是控制器应该提供的功能。一个UI 控制器应该是轻量化的组件,由它代表对UI范围之外的其它应用层的服务调用。良好的框架自然地形成代码分离的原则。更为重要的是,框架减轻了开发人员从头构建持久层代码的精力,从而集中精力来应用逻辑上,这对客户端来说更为重要。 本文讨论了如何结合几个著名的框架来达到松散耦合,如何设计你的架构,以及如何达到各个层次的一致性设计。面临的挑战是,将框架整合起来,以使每一层都向另外的层次以一种松散的方式来暴露接口,而不管底层功能使用的是什么技术。本文还讨论整合3种著名开源框架的一种策略。对表现层,我们使用Struts;业务层使用Spring;对于持久层我们使用的是Hibernate。你尽可以取代这里的某个框架而使用你喜欢的框架已达到同样的效果。图1显示了框架被整合起来时,从最高层次看到的视图。

Java框架简介

Java框架简介 AJAX ajax简介 AJAX全称“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。 它有机地包含了以下几种技术: 基于web标准(standards-based presentation)XHTML+CSS的表示; 使用DOM(Document Object Model)进行动态显示及交互; 使用XML和XSLT进行数据交换及相关操作; 使用XMLHttpRequest进行异步数据查询、检索; 使用JavaScript将所有的东西绑定在一起。 类似于DHTML或LAMP,AJAX不是指一种单一的技术,而是有机地利用了一系列相关的技术。事实上,一些基于AJAX的“派生/合成”式(derivative/composite)的技术正在出现,如“AFLAX”。 ajax优势 传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然后返回一个新的网页。这个做法浪费了许多带宽,因为在前后两个页面中的大部分HTML代码往往是相同的。 由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。与此不同,AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP 或其它一些基于XML的web service接口,并在客户端采用JavaScript处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。 Struts Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。 由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts 把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。【StrutsIDE:用于Struts辅助开发的一个Eclipse插件】 Struts框架可分为以下四个主要部分,其中三个就和MVC模式紧密相关: 1、模型(Model),本质上来说在Struts中Model是一个Action类(这个会在后面详细讨论),开发者通过其实现商业逻辑,同时用户请求通过控制器(Controller)向Action的转发过程是基于由struts-config.xml文件描述的配置信息的。 2、视图(View),View是由与控制器Servlet配合工作的一整套JSP定制标签库构成,利用她们我们可以快速建立应用系统的界面。 3、控制器(Controller),本质上是一个Servlet,将客户端请求转发到相应的Action类。 4、一堆用来做XML文件解析的工具包,Struts是用XML来描述如何自动产生一些JavaBean的属性的,此外Struts还利用XML来描述在国际化应用中的用户提示信息的(这样一来就实现了应用系统的多语言支持)。 Struts2 Struts2是一个web应用框架。它不是一个Struts的新的发布版本,而是一个全新的框架。Struts2 是第二代基于Model-View-Controller (MVC)模型的web应用框架。 Struts2是java企业级web应用的可扩展性的框架。它是WebWork和Struts社区合并后的产物。这一版本的Struts2声称,Struts2会接近于

相关主题
文本预览
相关文档 最新文档