熟悉J2EE的基本框架

熟悉J2EE的基本框架

1、Struts

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来描述在国际化应用中的用户提示信息的(这样一来就实现了应用系统的多语言支持)。

2、Spring

Spring是轻量级的Java  EE应用程序框架

Spring的核心是个轻量级容器(container),实现了IoC(Inversion   of   Control)模式的容器,Spring的目标是实现一个全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间批次可以独立,也可以使用其他的框架方案替代,Spring希望提供one-stop   shop的框架整合方案。

Spring不会特别去提出一些子框架来与现有的OpenSource框架竞争,除非它觉得所提出的框架构型够新够好,例如Spring有自己的MVC框架方案,因为它觉得现有的MVC方案有很多可以改进的地方,但它会强迫你使用它提供的方案,你可以选用你所希望的框架来取代 其子框架,比如你仍可以在Spring中整合你自己的Struts框架。

Spring的核心概念是IoC,IoC的抽象概念是【依赖关系的转移】,像是【高层模组不应该依赖低层模组,二而是模组都必须依赖于抽象】是IoC的一种表现,【实现必须依赖抽象,而不是抽象依赖实现】也是IoC的一种表现,【应用程序不应依赖于容器,而是容器服务于应用程序】也是IoC的一种表现。

Spring的架构性的好处

Spring能有效的组织你的中间层对象,无论你是否选择使用了EJB。如果你仅仅使用了Struts或其他的包含了Java   EE特有的APIs的framework,你会发现Spring关注了遗留下的问题。

Spring能消除在许多工程上对Singleton的过多使用,它可以减少系统的可测试性和面向对象特性。

Spring能消除使用各种各样格式的属性定制文件的需要,在整个应用和工程中,可通过一种一致的方法来进行配置。有了Spring,你可很简单的看到类的JavaBean属性,倒置控制的使用帮助完成这种简化,Spring能通过接口而不是类促进好的编程习惯,减少编程代价到几乎为零。

Spring可以帮助解决许都问题而无需使用EJB,Spring能提供一种EJB的替换物,他们适用于许多web应用,例如,Spring能使用AOP提供声明性事务而不通过使用EJB容器,如果你仅仅需要与单个的数据库打交道,甚至不需要JTA实现。

Spring为数据存取提供了一致的框架,不论是使用JDBC或O/R  mapping 产品(如Hibernate)。

Hibernate框架-简介

ORM对象、关系数据库映射

ORM全程Object/Relation  Mapping,对象/关系数据库映射,可以理解成一种规范。该框架的基本特征:完成面向对象的编程语言到关系数据库之间的映射。

ORM关系刑数据库包装成面向对象的模型。

ORM框架由实体+XML配置文件

 

 基本映射方式有三种:

1、数据库表映射类:持久化类被映射到一个数据表,当使用一个持久类来创建实例,修改实例属性,删除实例时,系统自动会转换对这个表进行CRUD操作。

2、数据表的行映射对象(实例):持久化类会生成很多实例,每个实例就对应数据表中的一个特定行的操作。每个持久化对象对应数据表的一行记录。

3、数据表中的列映射对象的属性:当在应用中修改某个持久化对象的指定属性时(持久化实例映射到数据行),ORM将会转换成对对应数据表中指定数据行、指定列的操作。

Hibernate就是一个ORM框架的典型代表

1、Hibernate是轻量级JavaEE应用的一个持久层框架,他的作用在于管理Java实体类到数据库表之间的映射关系,并且提供数据查询和获取数据的方法,可以大幅度的缩短使用JDBC处理数据持久化的时间。

2、Hibernate完成了对象模型和基于SQL关系模型的映射关系,使得程序员可以采用面向对象的方式来开发程序,充当了两者之间的桥梁。

3、Hibernate是一个面向Java环境的对象/关系数据库映射工具,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去,Hibernate的目标主要是为了释放开发者通常的数据持久化相关的编程的繁重任务。

4、Hibernate不仅仅管理Java类到数据库表的映射,还提供数据查询和获取数据的办法,可以大幅度减少开发时人员使用SQL和JDBC处理数据的时间。

对比一些框架的优缺点

 

 Hibernate主要特点:

1、开源和免费的License,方便需要时研究源码,改写源代码,进行功能定制。

2、轻量级封装,避免引入过多复杂的问题,调试容易,减轻程序员负担。

3、有可扩展性,API开放,功能不够用时,自己可以编码扩展。

Hibernate的持久化解决方案将用户从原始的JDBC访问中释放出来,用户无须再关注底层的JDBC的操作。而是以面向对象的方式进行持久层操作。底层数据连接的获得,数据访问的实现,事务控制都无须用户关心。将应用从底层的JDBC中抽象出来,通过配置文件管理底层的JDBC连接,让Hibernate解决持久化访问的实现。

工作原理:

 

 分析:

1、Hibernate框架需要2种配置文件,分别是hibernate.cfg.xml(存放数据库连接信息)与xxx.hbm.xml

2、xxx.hbm.xml是配置在hibernate.cfg.xml中,该文件确定了持久类与数据表,数据列之间的对应关系。

3、hibernate不再是直接调用JDBC访问,而是Session会话访问。在hibernate框架中,只有处于Session管理下的POJO对象才有持久化操作的能力。

几个关键对象:

SessionFactory:hibernate关键对象,它是单个数据库映射关系经过编译后的内存镜像,线程安全。主要作用是生成Session的工厂,该对象可以为事务之间可重用的数据提供可选的二级缓存。

Session:它是应用程序与持久存储层之间交互操作的一个单线程对象,是hibernate持久化操作的关键对象,所有的持久化对象必须在Session管理下才可以进行持久化操作。此对象的生命周期极短,底层封装了JDBC连接,Session对象持有一个必选的一级缓存,显示执行flush()之前,所有持久化操作的数据都缓存在Session对象处。

持久化对象:系统创建的POJO实例,一旦与特定的Session关联,并对应数据表的指定记录,该对象就处于持久化状态,这一系列对象都被称为持久化对象。在程序中对持久化对象执行的修改,都将自动被转换为持久层的修改。持久化对象完全可以是普通的JavaBean,唯一特殊的是他们正在与一个Session关联。

事务(transaction):具有数据库事务的概念,Hibernate事务是对底层具体的JDBC、JTA、以及CORBA事务的抽象,在某些情况下,一个Transaction之内可能包含多个Session对象。虽然事务操作是可选的,但所有持久化操作都应该在事务管理下进行,即便是只读操作。

连接提供者(ConnctionProvider):生成JDBC连接的工厂,通过抽象将应用程序与底层的DataSource或DriverManager隔离开,该对象无须应用程序直接访问,仅在应用程序需要扩展时使用。注:实际开发中,很少采用DriverManager来获取数据库连接,通常都会使用DataSource来获取数据库连接。

事务工厂(TransactionFactory):是生成Transaction对象实例的工厂,该对象无须应用程序直接访问,它负责对底层具体的事务实现进行封装、将底层具体的事务抽象成Hibernate事务。

 Java对象的三种形态:

瞬时状态、持久化状态与游离状态

瞬时:对象由new操作符创建,且尚未与Hibernate  Session关联的对象,被认为处于瞬态。瞬态对象不会被持久化到数据库中,也不会被赋予持久化标示,如果程序中失去了瞬态对象的引用,瞬态对象将被垃圾回收机制销毁。使用Hibernate  session可以让其变为持久化状态。

持久化:持久化实例在数据库中由对应的记录,并用友一个持久化标识,持久化的实例是可以刚保存的,也可以是刚被加载的。无论哪种,持久化对象都必须与指定的Hibernate  Session关联。Hibernate会检测到处于持久化状态对象的改动,在当前操作执行完成时将对象数据写回数据库。开发者不需要手动执行UPDATE。

游离:某个实例曾经处于持久化状态,但随着与之关联的session被关闭,该对象就变成游离状态了。游离对象的引用依旧有效,对象可以继续被修改,只是不会同步到数据库中。如果重新让游离对象与某个session关联,该对象回重新转换为持久化状态。

 

posted @ 2022-05-17 17:04  zz12138  阅读(350)  评论(0编辑  收藏  举报