JAVA三大框架入门SSH

本文深入解析了Spring、Struts和Hibernate三大JAVA框架的核心概念。Spring框架涵盖了依赖注入和面向切片编程,Struts则强调MVC模式,而Hibernate专注于对象关系映射。文章还提供了学习这些框架的资源链接。

写在前面:

最近接到某公司的电话面试,其中问到了JAVA框架的相关知识,发现自己对于这个方面了解实在太少,故从网上阅读了很多文章,最后将概念整理出来,从基本入门开始对JAVA框架再认识。

一、基本概念

了解框架的定位可以帮助我们更好的找到学习的切入点

1.Spring:

  • 依赖注入(DI)又称为控制反转(IOC),通常来说,当某个角色需要另一个角色才能正常运行时,通常是由调用者来创建被调用者的实例。但是在Spring框架中,创建被调用者的任务交给了Spring框架。

  • 面向切片编程(AOP)是面向对象编程(OOP)的延续,AOP中代码的编写顺序不再影响代码的执行顺序,目的是解耦业务代码和公共服务代码(如日志,安全,事务等)。

2.Struts:

Struts的关键是M(MODEL)-V(VIEW)-C(CONTROL)

  • 模型(M):用于封装与业务逻辑相关的数据和数据处理方法。

  • 视图(V):用于数据的展现

  • 控制器(C):负责相应请求,协调Model和View

3.Hibernate:

Hibernate的关键是ORM,即Object Relation Mapping(对象关系映射)。

ORM 用来把对象模型表示的对象映射到基于SQL的关系模型数据库结构中去。这样使得我们在具体的操作实体对象的时候,不需要再去和复杂的SQL语句打交道,只需简单的操作实体对象的属性和方法。ORM技术是在对象和关系之间提供了一条桥梁,前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化 。 
Hibernate 核心接口一共有5个: 
分别为:Session、 SessionFactory、Transaction、Query和Configuration。

  • Session:负责执行被持久化对象的CRUD操作(CRUD的任务是完成与 数据库的交流,包含了很多常见的SQL语句。(非线程安全)
  • SessionFactory:负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。(非轻量级)
  • Query:负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。
  • Transaction:负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
  • Configuration:负责配置并启动Hibernate,创建SessionFactory对象。

二、如何学习

以下我从网上搜集了一些学习框架的地址,记录下来备用:

Spring:要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓“登高必自卑,涉远必自迩”。以下几项Java知识和Spring框架息息相关,不可不学 
[1]Java反射知识–>Spring IoC :http://www.iteye.com/topic/1123081 
[2]Java动态代理–>Spring AOP :http://www.iteye.com/topic/1123293 
[3]属性编辑器,即PropertyEditor–>Spring IoC:http://www.iteye.com/topic/1123628 
[4]XML基础知识–>Spring配置:http://www.iteye.com/topic/1123630 
[5]注解–>Spring配置:http://www.iteye.com/topic/1123823 
[6]线程本地变更,即ThreadLocal–>Spring事务管理:http://www.iteye.com/topic/1123824 
[7]事务基础知识–>Spring事务管理:http://www.iteye.com/topic/1124043 
[8]国际化信息–>MVC:http://www.iteye.com/topic/1124044 
[9]HTTP报文–>MVC:http://www.iteye.com/topic/1124408

实验楼上的三门课程: 
Struts框架教程 https://www.shiyanlou.com/courses/32 
Hibernate框架教程 https://www.shiyanlou.com/courses/34 
Spring框架入门教程 https://www.shiyanlou.com/courses/578

框架说白了就是JAVA工作者多年以来总结出的一些开发标准。让我们可以以成功的经验模式来开发我们自已的系统,一般使用框架的好处是 ·在好的框架下,开发者只需要写一些必须的代码;他们不需要直接接触底层的API。 这一点很重要。 ·经过良好设计的框架可以为程序提供清晰的结构并且提高程序的内聚性。好清晰的结构使得其他人可以更容易加入项目。 ·一个容易使用的框架可以通过一些例子和文档为用户提供最佳实践。 ·采用成功的框架的代码比自己的代码容易测试 J2EE本身提供了一些框架。比如, Enterprise Java-Beans (EJB) container或者 Servlet engine 而这些框架一般在中小工程中我们都不会使用,会让我们把量的时间浪费在开发框架上。 而现在比较流行开源框架,主要是struts,hibernate,spring等 比如struts是在原有mvc基础上实现在代码分离等功能,非常好用。 而hibernate可以把我们的关系型数据库转换成我们在JAVA中的面像对像来使用。从而让我们在开发时不需要直接写SQL语句,比如database.getName();就可以直接把数据库中的用户名取出来。 Spring J2EE框架规模地运用到项目中,而项目总要负责这些框架以及自己业务代码的连接,使之真正融合到一起。Spring就是专注于这个问题的,它和Hibernate融合的很好。 这框架在一起并不冲突,所以现在最常用的框架就是 struts+hibernate+spring就像我们盖房子一样,先把框架搭好,我们在在上面写代码就很规范。 Struts框架介绍 : Struts只是一个MVC框架(Framework),用于快速开发Java Web应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的 Action,也为V(View)提供了一系列定制标签(Custom Tag)。但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑。 Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),用以构造我们所需要的M(Model)。在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便我们实 现J2EE的应用;DAO/ORM的实现方便我们进行数据库的开发;Web MVC和Spring Web提供了Java Web应用的框架或与其他流行的Web框架进行集成。 就是说可将两者一起使用,达到将两者自身的特点进行互补。 spring 框架介绍 : 它关注的领域是其他许多流行的Framework未曾关注的。Spring要提供的是一种管理你的业务对象的方法。 Spring既是全面的又是模块化的。Spring有分层的体系结构,这意味着你能选择仅仅使用它任何一个独立的部分,而它的架构又是内部一致。 因此你能从你的学习中,得到最的价值。例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。 它的设计从一开始就是要帮助你编写易于测试的代码。Spring是使用测试驱动开发的工程的理想框架。 Spring不会给你的工程添加对其他的框架依赖。Spring也许称得上是个一站式解决方案,提供了一个典型应用所需要的部分基础架构。它还涉及到了其他framework没有考虑到的内容。 尽管它仅仅是一个从2003年2月才开始的开源项目,但Spring有深厚的历史根基。 Spring架构上的好处 在我们进入细节之前,让我们来看看Spring能够给工程带来的种种好处: Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB。如果你仅仅使用了Struts或其他为J2EE的 API特制的framework,Spring致力于解决剩下的问题。 Spring能消除在许多工程中常见的对Singleton的过多使用。根据我的经验,这是一个很的问题,它降低了系统的可测试性和面向对象的程度。 通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。曾经对某个类要寻找的是哪个 魔法般的属性项或系统属性感到不解,为此不得不去读Javadoc甚至源编码?有了Spring,你仅仅需要看看类的JavaBean属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值