① J2EE当前持久层设计常见问题
J2EE当前持久层设计常见问题
当前J2EE项目中,面临的一个共同问题就是如果控制事务的并发访问,虽然有些持久层框架已经为我们做了很多工作,但是理解原理,对于我们开发来说还是很有用处的。下面我为大家整理了J2EE当前持久层设计的常见问题,一起来看看吧:
事务并发访问控制策略
当前J2EE项目中,面临的一个共同问题就是如果控制事务的并发访问,虽然有些持久层框架已经为我们做了很多工作,但是理解原理,对于我们开发来说还是很有用处的。
事务并发访问主要可以分为两类,分别是同一个系统事务和跨事务访问的并发访问控制,其中同一个系统事务可以采取乐观锁以及悲观锁策略,而跨多个系统事务时则需要乐观离线锁和悲观离线锁。在讨论这四种并发访问控制策略之前,先需要明确一下数据库事务隔离级别的问题,ANSI标准规定了四个数据库事务隔离级别,它们分别是:
读取未提交(Read Uncommitted)
这是最低的事务隔离级别,读事务不会阻塞读事务和写事务,写事务也不会阻塞读事务,但是会阻塞写事务。这样造成的一个结果就是当一个写事务没有提交的时候,读事务照样可以读取,那么造成了脏读的现象。
读取已提交(Read Committed)
采用此种隔离界别的.时候,写事务就会阻塞读事务和写事务,但是读事务不会阻塞读事务和写事务,这样因为写事务会阻塞读取事务,那么从而读取事务就不能读到脏数据,但是因为读事务不会阻塞其它的事务,这样还是会造成不可重复读的问题。
可重复读(Repeatable Read)
采用此种隔离级别,读事务会阻塞写事务,但是读事务不会阻塞读事务,但是写事务会阻塞写事务和读事务。因为读事务阻塞了写事务,这样以来就不会造成不可重复读的问题,但是这样还是不能避免幻影读问题。
序列化(serializable)
此种隔离级别是最严格的隔离级别,如果设置成这个级别,那么就不会出现以上所有的问题(脏读,不可重复读,幻影读)。但是这样以来会极大的影响到我们系统的性能,因此我们应该避免设置成为这种隔离级别,相反的,我们应该采用较低的隔离界别,然后再采用并发控制策略来进行事务的并发访问控制)。
延伸阅读:Java EE容器组成:
Web容器:包括Jsp与Servlet组件,可使用EJB中的组件完成复杂的商务逻辑;
EJB容器:包含组件EJB, EJB规范定义了一个开发和部署分布式商业逻辑的框架;
Applet容器 包含组件Applet,即可使用J2SE开发Applet;
Application Client容器:包含组件Application Client。
现在流行的Java EE容器有很多:Tomcat、JBoss、Resin、Glassfish等等。下面对这四种Java EE容器进行了一番简单的比对。
1. Tomcat
Tomcat是Apache鼎力支持的Java Web应用服务器,由于它优秀的稳定性以及丰富的文档资料,广泛的使用人群,从而在开源领域受到最广泛的青睐。
2. Jboss
Jboss作为Java EE应用服务器,它不但是Servlet容器,而且是EJB容器,从而受到企业级开发人员的欢迎,从而弥补了Tomcat只是一个Servlet容器的缺憾。
3. Resin
Resin也仅仅是一个Servlet容器,然而由于它优秀的运行速度,使得它在轻量级Java Web领域备受喜爱,特别是在互联网Web服务领域,众多知名公司都采用其作为他们的Java Web应用服务器,譬如163、ku6等。
在商用应用服务器里主要有:Weblogic、Websphere,其中Weblogic我也使用过很长一段时间,当时也只用其当Servlet容器,然而就在同等条件下,在性能及易用性等方面,要比Tomcat优秀很多。
4.glassfish
glassfish是Sun公司推出的Java EE服务器(Java EE容器),一个比较活跃的开源社区,不断的通过社区的反馈来提高其的可用性,经过glassfish v1 glassfish v2 到今天的glassfish v3 ,它已经走向成熟。Glassfish是一个免费、开放源代码的应用服务,它实现了Java EE 5,Java EE 5 平台包括了以下最新技术:EJB 3.0、JSF 1.2、Servlet 2.5、
JSP 2.1、JAX-WS 2.0、JAXB 2.0、 Java Persistence 1.0、Common Annonations 1.0、StAX 1.0等。
支持集群,通过内存中会话状态复制,增强了部署体系结构的可用性与可伸缩性,它对集群有着很好的支持,可以简单到通过添加机器,就可轻松的提高网站的带负载能力,在解析能力方面,它对html的吞吐能力与apache服务器不分上下,就是tomcat所不能比的,支持目录部署,热部署,解决了tomcat对热部署能力的缺陷。
在版本方面做的更加人性化,有开发时用的简化版,专门用于部署web项目的版本,还要完全符合j2ee标准的版本。
;② java持久层框架就是数据库框架吗
你先理解一下持久层的意思吧,看一看mvc架构对你理解持久层比较有帮助,数据库一般不说数据库框架,对数据库操作的框架就是持久层框架
③ 常用的javaWeb持久层框架有哪些
是的,一般企业中用的比较多的是 mybatis,因为对其sql可是实现很好的控制,然而hibernate就显得太智能了,你无法看到后台sql是怎么执行的,这对于一个具有完全掌控欲的程序员来说是不可容忍的。。而且后台多多表查询的xml配置还需要另外的学习成本,java api提供的jdbc就稍微功能不足,有点麻烦。。但是遇到像几十万条数据要插入数据库,那么所有的框架都无能为力了,这个时候jdbc就显得更好了。。
④ 什么是持久层框架,持久两个字该怎么去理解
从字面上理解的话,就是一直存在,直到你更新为止。
在应用上来说,会使用序列化的方式保存数据,在使用时LOAD进来。
⑤ 基于web和基于ssm的区别
基于web和基于ssm的区别分别是:
基于Java Web常见的三层结构是:
1、表现层:也就是Web层,常见的框架有Spring MVC、Struts2 ,并包括用于展示的界面,如JSP界面;
2、业务层:Service层,专注于业务逻辑的实现;
3、持久层:也叫Dao层,常见的框架是Hibernate、MyBatis。负责与数据库的交互,封装数据库的访问细节。
从数据库表中读取加载数据并实例化领域对象(Domian Object)也就是从数据库中读取数据,或者返过来将领域对象实例化到数据库中,也就是将数据写入到数据库中。
Java在SSM框架中的体现是:
1、POJO层: 由一组POJO组成,是对系统各种对象的抽象表达。
2、DAO层: 负责数据库的访问,增、删、改、查等,在MyBatis框架中也常被定义为Mapper层。
3、Service层:由业务逻辑对象组成,是不同系统的业务逻辑的具体实现。
4、Controller层:由控制器组成,对来自浏览器的用户请求进行拦截,并调用Service层的响应的业务逻辑组件处理用户请求,并转发返回结果到View层。
5、View层:由JSP界面,PDF文档等组件组成,用于显示系统对用户请求的处理结果。
SSM框架中各框架的作用是:
1、MyBatis:持久层框架,负责数据库访问。
2、Spring MVC:表现层框架,把模型、视图、控制器分离,组合成一个灵活的系统。
3、Spring: 整合项目的所有框架,管理各种Java Bean(mapper、service、controller),事务控制。