书签 分享 收藏 举报 版权申诉 / 31

类型SSH框架笔记.docx

  • 文档编号:2458729
  • 上传时间:2023-05-03
  • 格式:DOCX
  • 页数:31
  • 大小:33.29KB

拦截器返回Struts目录

1.什么是拦截器组件,拦截器组件的作用

2.拦截器组件原理

3.拦截器组件的使用

1)自定拦截器组件

2)使用struts2框架的拦截器组件

Hibernate返回主目录

Hibernate

第一课

知识点:

hibernate基本原理

为什么使用hibernate?

ahibernate属于M,跟jdbc干同样的事,都是对

数据库的操作

bhibernate是对jdbc的封装,底层依然是jdbc

chibernate是ORM框架,O--->Object(实体类对象)

R--->Relational(表)M--->Mapping(映射)

hibernate就是用面向对象的方式,来操作数据库

简化程序员的开发

dhibernate也叫持久层框架

e市场上能占到40%左右

fhibernate因为底层封装jdbc,性能稍弱

简要介绍一下hibernate3.2文件

doc:

hibernate3.2的说明文档,包含hibernate的

Api(全英文版)

eg:

hibernate官方提供的案例,包含

User.hbm.xml(映射文件:

实体类跟数据库表关联

桥梁)

etc:

hibernate中所有的配置,其中最重要

hibernate.cfg.xml(hibernate核心配置文件,hibernate

运行必要的文件),包括一些缓存文件ehcache.xml

)lib:

跟hibernate有关所有的第3方jar

)src:

hibernate所有的源代码,开源框架

)hibernate3.jar:

hibernate核心jar

归纳hibernate特点:

简单(对于程序员)

开源

orm框架,持久层(M)框架

可以兼容现在所有主流的数据库

完全面向对象

性能不好

3使用hibernate的步骤

导入jar:

hibernate_lib

导入核心配置文件:

hibernate.cfg.xml,连接到数据库

创建Po类以及修改orm映射文件

把orm映射文件,加载到hibernate.cfg.xml中

使用hibernate的Api操作

案例:

使用hibernate来创建一张表

t_user

主键

idnameagepwd

User.hbm.xml(ORM映射文件)

classUser{

privateintid;

privateStringname;

privateintage;

privateStringpwd;

//get、set

}

po类的属性,必须跟要创建的表的列一致

4hibernate核心

hibernate.cfg.xml:

a连接数据库:

Driver,url,用户名,密码

dialect(方言):

通过配置方言可以帮我们操作

任何数据库,底层对数据库的操作的sql语句,

会自动转化对应数据库的sql

bhibernate自身的属性:

show_sql:

把hibernate底层执行jdbc的sql语句,

打印控制台上,使用hibernate必须配置该属性

c配置ORM映射文件:

hibernate执行的时候,会

读取hibernate.cfg.xml文件,只有把orm映射文件

配置到hibernate.cfg.xml,才能加载到hibernate当中

ORM映射文件(注意看提示):

po类跟数据库中表,之间映射的桥梁

//hibernate当中默认主键最重要

//generator:

主键生成策略

identity:

每次添加新的数据,主键自动加1

--配置一般属性信息-->

Configuration

读取配置文件

hibernate.cfg.xml(核心配置文件)

xxx.hbm.xml(映射文件)

hibernate程序只要一启动,立刻就会调用

Configuration读取文件

SessionFactory

重量级对象(资源):

大量侵占内存资源,功能强大

创建Session(SessionFactory是产生

Session的工厂)

b)管理hibernate二级缓存(以后讲)

c)一个项目对应/一个数据库中对应一个

SessionFactory,生命周期很长,跟整个

系统生命周期一致

5)Session:

Hibernate当中最核心的(功能)类,hibernate对

数据库中都依赖Session来实现的

Session:

可以实现增删查改

session的生命周期较短,代表一个用户对

数据库访问的一个连接

c)每次对数据库的操作都要使用session,(最好

能把session跟当前访问用户绑定在一起)

6)Transaction:

hibernate中管理事务:

Hibernate的事务是手动提交的,必须要开启事务,并提交才可以改变表中的数据

jdbc自动的提交事务

4使用hibernate来实现增删查改

load跟get

load去数据库查询一个不存在的数据,会

直接抛出一个异常(ObjectNotFoundException)

get去数据库查询一个不存在的数据,会返回

一个null值

b)load方法支持延迟加载,当访问该对象的

属性,才发出sql对数据库查询

get方法不支持延迟加载,使用get方法立刻

发出sql语句,去数据库中查询

延迟加载:

需要才发出sql,去数据库中查询

hibernate底层怎么实现延迟加载的/load返回对象

是什么类型的?

Empemp=(Emp)session.load(Emp.class,1);

load返回的对象,不是emp对象,没有去数据库中

真实查询,所以没有发出sql语句

b)load返回的是一个代理对象(代替要查询的对象

叫做代理对象),该代理对象来暂时代替emp对象

c)该代理对象是目标对象的子类对象

(该子类对象是hibernate内部自动生成,跟我们无关)

eg:

classStudentextendsPerson{}

Personperson=newStudent();

d)这是代理模式:

cglib动态代理,能提高hibernate

性能,减少对数据库的访问次数

案例:

hibernate_day01Pm

创建一张员工表

t_emp

idnameagebirthdaysalary

实现增删查改,全部使用hibernate

第二课

1.Hibernate映射类型

在hbm.xml中定义字段和属性映射时,type属性用于指定映射类型。

映射类型可以使用Java类型或者Hibernate类型。

映射类型作用是:

实现字段值和属性值相互转化。

1)Java类型(完整包名.类名)

java.lang.Integer,java.lang.String等

2)Hibernate类型(推荐)

*a.字符串string

*b.整数byte,short,integer,long

*c.浮点数float,double

*d.时间日期date,time,timestamp

*e.布尔类型

yes_no:

实现boolean属性和Y|N值的相互转化

true_false:

实现boolean属性和T|F值的相互转化

f.其它例如blob,clob,big_decimal,

big_integer

2.Hibernate主键生成方式

Hibernate在添加操作时,可以自动生成主键值,具体方式预定义了以下几种:

*1)sequence

采用序列方法生成主键值,仅适用Oracle

使用格式如下:

序列名

*2)identity

采用数据库自动增长机制生成主键值。

适用于MySQL,SQLServer数据库。

需要建表时将主键字段设置成自动增长。

*3)native

根据dialect参数自动切换成identity或sequence方式。

4)assigned

hibernate不负责生成id,需要开发者在程序中指定id值。

5)uuid

采用uuid算法生成一个id值,值类型是字符串类型

6)hillo

采用高低位算法生成一个id值,类型是数值

7)increment

先执行selectmax(id)语句获取当前ID最大值,然后加1执行insert操作。

适用于各种数据库

提示:

如果上述生成方式都不能满足需要,可以自定义主键生成器。

(参考MyGeneratorId.java)

===========================

3.Hibernate框架基本特性

1)一级缓存(Session级别)

一级缓存默认开启。

当查询某一个对象时,第一次会查询数据库,取回的对象会默认放入一级缓存,如果再使用当前session查询该对象时,会直接从缓存取出,减少了对数据库的查询。

当Session对象创建后,每个Session都有一个独立的一级缓存区,每个Session只能使用自己的缓存区,不能交叉访问。

在程序中可以利用以下方法清除缓存中的对象,释放空间。

session.evict(obj);//清除指定的obj对象

session.clear();//清除所有缓存对象

session.close();//释放session及其缓存

2)对象持久性

在使用hibernate过程中,实体对象可以具有以下三种状态:

a.临时状态

使用new构造出来的。

*b.持久状态

与session对象关联,受session管理的对象。

例如调用了load,get,save等方法后

持久状态的对象有以下特点:

--持久对象的数据状态可以与数据库同步更新。

--垃圾回收器不能回收持久对象

--持久对象存在于一级缓存中,受Session管理,由Session负责持久化操作的。

--持久对象同步更新是在session.flush时刻执行。

mit()方法在内部先调用flush方法,然后再执行事务提交动作

c.游离状态

原来是持久状态,当调用evict,clear,close后会变成游离状态

================================

Sessionsession=HibernateUtil.getSession();

Transactiontx=session.beginTransaction();

for(inti=1;i<=10000;i++){

Foofoo=newFoo();

//setter

session.save(foo);

if(i%50==0){

session.flush();//同步

session.clear();//释放缓存

}

}

mit;

HibernateUtil.closeSession(session);

==============================

3)延迟加载

a.什么是延迟加载

当使用延迟加载方法时,返回的实体对象并没有数据库数据,而是在使用对象的getter方法获取属性值时才去发送SQL操作,去数据库查询。

*b.什么操作采用加载机制

session.load()

query.iterator()

采用关联映射后,获取关联属性的getter

*c.避免出现以下异常

org.hibernate.LazyInitializationException:

couldnotinitializeproxy-noSession

原因是采用了延迟加载机制的操作,但是在加载数据前关闭了Session导致的。

d.延迟加载的好处

主要优点是降低用户操作的并发率。

e.延迟加载实现原理

hibernate框架采用动态代理技术实现了延迟加载机制。

动态代理技术指的是:

动态在内存中构建一个类型,动态的编译,然后载入类加载器使用。

Java中可以利用asm.jar,

cglib-2.1.3.jar.

asm可以动态生成一个类,动态编译。

cglib可以动态生成一个类的子类。

---------原理的过程如下---------

利用延迟加载方法返回的对象类型,是借助于cglib.jar工具动态生成的一个类型,该类型是原实体类的子类。

在动态生成的子类类型中,重写了属性的getter方法。

在重写的get方法中,会触发SQL查询操作。

publicclassFoo$$CGLIB23423

extendsFoo{

publicStringgetName(){

//检查是否已加载数据,

//没有的话,执行sql加载数据

//有的话,将name值返回

}

}

*f.session中load和get方法区别如下

--load具有延迟加载机制;get没有,是立刻加载数据

--load返回一个动态生成类型的对象;get方法返回的是实体类对象

--load查询如果没有符合条件的记录会抛出ObjectNotFoundException;get没有结果返回的是null

 

--拦截器配置-->

class="com.tarena.action.LoginInterceptorAction">

class="com.tarena.interceptor.OpenS

配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
SSH 框架 笔记
提示  冰点文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:SSH框架笔记.docx
链接地址:https://www.bingdoc.com/p-2458729.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2


收起
展开