轻量级框架

解决方案是什么?

企业级应用需要解决并发,交互,事务,集群,安全,分布式,WEB的一系列问题。

什么是EJB?

由EJB(企业级javabean)服务主要提供生命周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。

什么是J2EE

J2EE是一套设计、开发、汇编和布署企业应用程序鄂规范。

J2EE提供了企业级应用程序的开发平台,提供了多层结构、分布式、基于组件、松耦合、安全可靠、独立于平台且反应迅速的应用程序环境。

J2EE包含的组件技术:

①JSP:J2EE的WEB层核心技术

②Servlet:J2EE的Web层核心技术

③JDBC:数据库访问技术

④XML:跨平台的可扩展标记语言

⑤EJB:J2EE的业务层核心技术

⑥JNDI:JAVA命名和目录接口

⑦JMS:JAVA消息服务

⑧JTA和JTS:JAVA事务管理

⑨javaMail:邮件收发

10、RMI:远程方法调用

11、IDL:接口定义语言,将JAVA与CORBA集成的一种技术

重量级框架:启动、测试、运行都不能离开容器单独进行。依赖性强。

轻量级框架:SUN提出容器提供服务,框架提供同样的服务,用来支持POJO。通过代理方式实现服务的附加。用轻量级框架,持久层和业务层可以单独测试。

类通过请求拦截,附加功能,添加服务

EJB组件分布式处理,轻量级框架通过RPC远程方法调用,WEBSERVICE

表现层

 

业务层

 

持久层

 

数据库DB

Struts1

 

 

 

hibernate

 

 

Struts2

 

 

 

mybatis

 

 

webwork

 

 

 

jdo

 

 

springMVC

 

 

 

EJB实体Bean

 

 

O/RMapping

什么是O/R Mapping?

对象-关系映射是一门非常实用的工程技术。它实现了java应用中的对象到关系数据库中的表的自动的(和透明的)持久化,实用元数据描述对象与数据库间的映射。

O/R Mapping的优点:

提高生产率                可维护性                 更好性能

Hibernate特点:

①Hibernate是一种开放源代码的对象/关系映射持久层框架

②事务处理,生命周期管理不依赖于J2EE容器

③解决数据库的方言问题

④hibernate只需要操作对象就可以完成数据库的增、删、查、改操作。使用hebernate更面向对象

⑤轻量级、无侵入性,移植性很好。

 

Ssh:

Struts:撑杆

Hibernate:冬眠

spring:春天

 

主键生成策略:

Increment(自动增长,其主键由hibernate控制,数据库中相应对的字段没有设置自动增长,不能用于集群)

Indentity(自动增长,对DB2、Mysql,sql server数据库中相应的字段设置自动增长)

Sequence(对Oracle数据库中相应的字段设置自动增长)

UUID:采用UUID算法生成字符串唯一标识,UUID生成策略相对涞水速度较快。不需要使用数据库相关的维护表的操作,但查找相对较慢

Native(根据数据库底层的描述,觉得采用indentity,sequence中的一个)

assigned:手动分配主键,当generator没有设置时,采用这种方式

Select:使用触发器分配主键

foreign:使用另外一个相关联的对象的标识符。通常和联合起来使用

oracle序列添加主键生成策略

S_CUST_ID为序列名称

S_CUST_ID

 

对象状态

Transient(瞬时状态)

当生成PO对象时产生,数据库中没有相应的记录,没有session对其进行管理

Persistent(持久状态)

当session对象调用saveorupdate()时,数据库中有与之对应的记录,有session对象对之进行管理,当PO对象的值发生变化时,session对象让数据库记录与之同步

Detached(游离状态)

当session植物提交时,数据库中有与之对应的记录,从session一级缓存中清楚,session对其不再进行管理

 

hibernate中getheload的区别

1、get为立即加载,调用get方法时,会马上执行SQL将结果查询出来。

load为延迟加载,调用load方法时,不会马上查询结果。二十当查询出来的对象在使用时,才发出SQL语句查询结果。

 

2、当查询的主键不存在时,get方法返回null,load方法会抛出“对象未找到异常”。

 

对延迟加载而言。一旦查询的对象不使用,不会真正查询数据库。这时,如果session关闭,再使用查询的对象,那么会抛出

 org.hibernate.LazyInitializationException

你可能感兴趣的:(轻量级框架)