SSH总结

本文深入介绍了Struts和Spring两大Java Web框架的特点与应用,详细解析了MVC设计模式的实现方式,以及Spring框架如何通过IOC和AOP降低代码耦合度,并探讨了Hibernate作为ORM框架在对象与关系型数据库间的数据映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Struts

java Web开源框架,实现了MVC设计模式。

 

Hibernate

Hibernate是ORM(Object Relational Mapping)框架,ORM是描述对象和关系型数据库之间映射的元数据,将java对象持久化到关系数据库中。

Hibernate做的事情:

(1)将对象模型存入关系模型

(2)解决阻抗不匹配问题(java类中有继承关系,但关系型数据库中不存在)

 

Hibernate持久对象的声明周期

Transient对象:数据库中没有记录,没有纳入session管理

Persistent对象:数据库中有记录,纳入session管理

Detached对象:数据库中存在记录,没有纳入session管理

 

Hibernate加载数据

get不支持延迟加载,load支持延迟加载,返回代理对象,只有使用对象时才会加载。

SessionFactory线程安全,提供缓存机制;Session不是线程安全,一线程一Session。

Session.flush()清理缓存,执行SQL语句。Session执行flush的情况:

(1)事务提交时执行

(2)显示调用flush

(3)执行查询iterate()

 

事务隔离级别

未提交读:没有commit就可以读

提交读:提交后读,正常(但是存在不可重复读的情况)

可重复读:读取数据时被锁住(存在读取的时候,别人增加或者删除,再读就不一样)

序列号读:最严格的情况

 

iterate()有N+1问题,查询时使用缓存,第一次查询会缓存,再次查询就先看缓存中是否有,有的话直接使用,否则发出查询语句。所以先查询所以id,返回n条记录,然后再根据id查询元素。

 

Hibernate缓存

一级缓存:生命周期和Session一致,所以称为Session级缓存。支持一级缓存的方法:get,load,iterate

二级缓存:进程级缓存或SessionFactory级缓存。所有Session共享,一般使用EHCache

启用查询缓存query.setCacheable(true);

 

----------------------------------------------------------------------------------------------

Spring

Spring是一个开源的分层框架,分层结构如下图所示。可以使java对象的松散耦合,提供灵活的中间件服务。

spring的组成包括7大模块

(1)Spring Core:核心容器,BeanFactory提供组件的声明周期管理

(2)ApplicationContext:Spring的上下文,提供事件处理和国际化等支持

(3)WebApplicationContext:Spring的web上下文,提供web开发支持

(4)Spring DAO:提供JDBC和事务支持

(5)Spring ORM:提供ORM框架的支持

(6)Spring AOP:提供面向切面编程的支持

(7)Spring MVC:MVC框架,相当于Struts

 

Spring IOC

IOC(Inversion Of Control)控制反转,或者称为DI(Dependency Injection)依赖注入。

对象之间的关系由容器动态建立,代码耦合度低。由Set方法或者构造器来建立依赖关系。

 

Spring AOP

AOP(Aspect Orient Program)面向切面编程。将应用程序的交叉处理的业务逻辑提取出来,封装成切面。由AOP容器在适当的时机将切面动态织入到业务逻辑代码中,降低了代码的耦合度。

AOP的原理是采用java的动态代理。代理对象是目标对象的子类,所以目标对象不能是final类。

 

Spring 持久层支持

Spring采用DAO模式,封装模板类HibernateDAOSupport,JDBCTemplate.

 

Spring事务

HibernateTransactionManager支持事务。包括声明式事务、编程式事务。

声明式事务:使用AOP为Service对象提供事务切面

 

转载于:https://www.cnblogs.com/thly1990/p/3578933.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值