Spring、Struts、Hibernate、EJB、JDBC、JNDI、JDO、JTA和JTS、AJAX、JMS、JSF、事务
轻量级开发框架,分层架构,一站式(full-stack),高内聚低耦合,允许客户端JavaScript远程调用服务端JAVA类方法。
Spring应用中的对象不依赖于Spring的特定类。
POJO:简单的Java对象,或指支持业务逻辑的协助类。
面向方面编程(AOP)
通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发
为基于 Spring 的应用程序中的对象提供了事务管理服务。
核心容器
Bean Factory 使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
依赖注入——构造、Setter、接口
上下文
DAO
异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。
ORM(对象关系映射,Object-Relation Mapping)
在单个组件中负责所有实体域对象的持久化,邓庄数据访问细节
Web模块
简化了处理多部分请求以及将请求参数绑定到域对象的工作
MVC框架
在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里
Spring也提供了很多基础功能(事务管理、持久化框架集成等等)
减少在运用MVC设计模型来开发Web应用的时间。
l M —— JavaBean或EJB
l V —— JSP、Tag
l C —— Action(用户请求和业务逻辑之间的桥梁) 和 Action Servlet
配置文件
1)默认值 “\WEB-INF\struts-config.xml”。
配置文件可以定义:
2)“\WEB-INF\struts-config.xml”
配置文件可以定义:
核心控制组件
org.apache.struts.action.ActionServlet
Action Servlet是Struts框架里唯一的Servlet,它负责处理所有请求。它无论何时收到一个请求,都会首先试着为现有请求找到1个子应用。一旦子应用被找到,它会为其生成一个Request Processor对象,并调用传入HttpServletRequest和 HttpServletResponse为参数的process()方法。
Struts处理流程
图一 Struts处理流程
图二 Struts设置断点后详细流程
对象关系映射框架,它对JDBC进行了轻量级的对象封装,可以使用对象编程思维来操纵数据库,实现对象持久化和事务控制。
图三 Hibernate框架
核心类和接口
Session接口
非线程安全,负责执行被持久化对象的CRUD操作
save() 临时对象->持久化对象
Session Factory接口
负责初始化Hibernate
Transaction接口
可选接口,对实际事务实现的一个抽象,这些实现包括JDBC的事务、JTA 中的User Transaction、甚至可以是CORBA 事务。
Query接口
有两种表达方式:HQL语言或本地数据库的SQL语句。
经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。
Criteria接口
同Query,轻量级,不能在Session之外使用
Configuration类
对Hibernate 进行配置,负责启动Hibernate,再创建一个Session Factory对象
缓存管理
第一级别的缓存,是Session级别的缓存,它是属于事务范围的缓存。
当应用程序调用Session的save()、update()、saveOrUpdate()、get()或load(),以及调用查询接口的 list()、iterate()或filter()方法时,如果在Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级缓存中。
当清理缓存时,Hibernate会根据缓存中对象的状态变化来同步更新数据库。 Session为应用程序提供了两个管理缓存的方法:
evict(Object obj):从缓存中清除参数指定的持久化对象。
clear():清空缓存中所有持久化对象。
第二级别的缓存是Session Factory级别的缓存,它是属于进程范围或群集范围的缓存。
** 查询缓存,依赖于第二级缓存。
延迟加载
get不支持延迟加载,load支持延迟加载。
l 会话Bean(Session Bean)
l 实体Bean(Entity Bean)
l 消息驱动Bean(Message Driven Bean)
l 是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
l 常用类:Driver Manager、Connection、Statement / Prepared Statement / Callable Statement、Result Set
JNDI可访问的现有的目录及服务有:
DNS、Novell目录服务、LDAP(Lightweight Directory Access Protocol轻型目录访问协议)、 CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMI、DSML v1&v2、NIS。
配置文件
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>MySqlDS</jndi-name> <connection-url>jdbc:mysql://localhost:3306/lw</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>root</password> <exception-sorter-class-name> org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter </exception-sorter-class-name> <metadata> <type-mapping>mySQL</type-mapping> </metadata> </local-tx-datasource> </datasources>
获得链接
Context ctx=new InitialContext(); Object datasourceRef=ctx.lookup("java:MySqlDS"); //引用数据源 DataSource ds=(Datasource)datasourceRef; conn=ds.getConnection();
l 是Java对象持久化的新的规范,也是一个用于存取某种数据仓库中的对象的标准化API。
l JDBC只是面向关系数据库(RDBMS);JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。
l 通过访问JDO Instance , 达到访问JDO Instance 所代表的数据对象,包括:ERP,数据库系统等,使数据的存储介质对于应用的开发人员完全透明。
对比如下:
DAO
l ⒈事务划分代码被嵌入到DAO类内部
l ⒉DAO类使用JDBC API来进行事务划分
l ⒊调用者没有划分事务的方法
l ⒋事务范围被限定在一个单一的JDBC连接
JTA
l ⒈用JTA对事务进行划分
l ⒉事务划分代码被DAO分开
l ⒊调用者承担划分事务的责任
l ⒋DAO参与一个全局的事务中
异步JavaScript 及XML。是一种基于 JavaScript和HTTP请求(HTTP requests),广泛应用在浏览器的网页开发技术。
图四 DOM标签
一种用于构建Java Web 应用程序的标准框架,为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。
ACID原则——原子性、一致性、隔离性、并发性
原文:http://www.cnblogs.com/sweetyu/p/5054211.html