在搭建系统的架构时我们采用了ssh+ajax等方式构建的。我一在和大家说我们要层次分明,思路清晰,可现在都比较糟糕。
比如:JSP页面用来显示数据的,css用来美化页面,JS用来控制页面的。现在很多页面中什么都有了,臭味很多。
在后台我们也分了action,service,dao层,原本action用来控制调度的,service用来处理相关的业务逻辑的,DAO中用来CRUD数据的。可现在出现了action包裹着一部分逻辑,service就非常简单了,就是用来调用DAO中的方法,而DAO中的方法即包裹了业务处理逻辑又包裹了CRUD数据处理。而且有的业务逻辑非常的复杂,涉及到的表操作很多,比如有
//结合spring支持hibernate
Session session = getSession();
//可以能会处理的一些东西
//1)通过hibernate方法select数据
//2)通过hibernate方法update数据
//3)通过hibernate方法delete数据
//4)通过hibernate方法insert数据
//通过session获取Connection,使用JDBC进行数据处理
Connection con = session.getConnection();
//因为有一些逻辑很负责一个select语句涉及的表太多,所以用JDBC来处理。
String sql = "select a ,b ,c ,d from A ,B,C,D where a = ? and b=?";
//反正类似的操作吧,就是关连来多。
类似上面的方式,大多数同学在大多数的时候都是这么弄的。我觉得这样做就把业务逻辑和数据处理混淆了,方法太臃肿了,有着浓浓的臭味,不便于维护。XP中提倡面向接口编程、分层、短小的方法。它这么一个长长的方法占用一个连接的时间太长(也就是整个事务的时间延长了),那么当其他的用户对相关的表进行请求时,就会出于等待的状态,资源的竞争,如果长时间是这样死锁就出现了。:(
我一般会把他们分布在不同的方法中。
//对应表的相关操作
public interface DAO{
public List get##(String s);
public void update##(String ...);
public void delete##(String ...);
public void insert##(String ...);
public List find##(String...);
}
public class Service{
public DAO dao = .......;//注入DAO对象。
//结合DAO执行相应的业务处理操作
public List update###(){
dao.get(s);
dao.update##(String ...);
dao.delete##(String ...);
dao.insert##(String ...);
//处理更复杂的业务逻辑。
logice();
return dao.find##(String...);
}
public void logice(){
//to do something
}
}
这样我的每一个DAO中的方法就会用到不同的SESSION(不同的CONNECTION),是这样的吗?但是我是通过SPRING对service层进行事务处理的呀,那是不是说明两种方式都会要占用同样的事务处理资源?
看到那些贫血的SERVICE我就郁闷,现在我有检查代码是否存在问题我也迷茫,这事情做的太少了。很多时候我们只顾一直往前跑,没有时间回头看。其实,我们要经常的code view,使用TDD开发模式,用XP的小步发布,这样不要让代码的味道变的太坏,也对自己写的代码充满信心,和用户交流底气十足。开发出来的系统,用户满意,市场行情看涨。:)
请您提出宝贵的意见。
更新:2008-10-10 22:00
我把标题从“DAO实现方法中一个Connection捅到底好吗?头疼”改成“细粒度处理事务,尽快的结束事务”,这个是我最终的目的。现在我明白了整
个业务方法调用过程中都是使用同一个SESSION(Connection)。至于业务逻辑怎样来平衡分布,是不是可以把一部分放到ACTION,一部分放到service,Dao只负责和数据库处理。对只读的事务我对其只用readOnly。
比如:我上面的例子是不是可以变成如下的样子呢?
//对应表的相关操作
public interface DAO{
public List get##(String s);
public void update##(String ...);
public void delete##(String ...);
public void insert##(String ...);
public List find##(String...);
}
public class Service{
public DAO dao = .......;//注入DAO对象。
//结合DAO执行相应的业务处理操作
//该方法上加事务,传播途径为required
public void update###(){
dao.update##(String ...);
dao.delete##(String ...);
dao.insert##(String ...);
//处理更复杂的业务逻辑。
logice();
}
//该方法上加事务,传播途径为required,readOnly
public String get###(String s){
return dao.get(s);
}
//该方法上加事务,传播途径为required,readOnly
public List find###(String...){
return dao.find##(String...);
}
public void logice(){
//to do something
}
}
/**
*那么action中是不是可以变成如下的样子呢?
*
*/
public class Action{
//注入服务类
public Service service = null;
public ActoinForward update###(ActionForm...............){
//下面这样调用是不是会能更好的呢?
service. get###(s);
service. update###();
service. find###(String...);
}
}
我们希望能够更快的结束事务,避免不必要的阻塞,保证系统有更好的性能。
分享到:
相关推荐
【细粒度位置追踪】是指在提供位置服务的过程中,对用户位置信息进行高度精确和细化的管理和保护。这种追踪方式通常涉及到移动设备,如智能手机,它们利用GPS或其他定位技术获取并分享用户的位置信息。然而,这种...
【作品名称】:基于python实现的细粒度情感分析:细粒度情感分析接口 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:...
共包含6大类20个细粒度要素的情感倾向.数据集分为训练、验证、测试A与测试B四部分。数据集中的评价对象按照粒度不同划分为两个层次,层次一为粗粒度的评价对象,例如评论文本中涉及的服务、位置等要素;层次二为细...
细粒度情感分类是自然语言处理(NLP)领域的挑战之一,它要求模型不仅能识别出文本的情感极性(如正面、负面或中性),还能识别出更具体的情感类别,如喜悦、悲伤或愤怒。这种任务对模型的语义理解和情感分析能力有...
在线评论的细粒度情感分析对于深刻理解商家和用户、挖掘用户情感等方面有至关重要的价值,并且在互联网行业有极其广泛的应用,主要用于个性化推荐、智能搜索、产品反馈、业务安全等。本次比赛我们提供了一个高质量的...
细粒度情感分析是自然语言处理(NLP)领域中的一个重要任务,它旨在识别文本中更具体、更微妙的情感倾向,比如对某个产品特性的评价。在这个基于Python的项目中,我们将探讨如何设计和实现一个高效的情感分析系统,...
python实现的细粒度情感分析:细粒度情感分析接口(源码+详细文档说明)python实现的细粒度情感分析:细粒度情感分析接口(源码+详细文档说明)python实现的细粒度情感分析:细粒度情感分析接口(源码+详细文档说明...
在OpenCL SVM中,有两种主要的内存访问粒度:粗粒度和细粒度。理解这两者之间的区别对于优化应用程序至关重要。 1. **粗粒度缓冲区**: - 在粗粒度SVM中,数据区域被分配给单一的计算设备,通常是GPU。这意味着...
细粒度情感分析涉及到自然语言处理、机器学习等多个技术领域,包括情感词汇库构建、情感分类模型训练等步骤。同时,由于用户评论的语言复杂性和主观性,如何准确识别和量化用户的情感是一项极具挑战性的任务。 总结...
细粒度情感分析研究综述是针对互联网中基于...综上所述,细粒度情感分析研究综述为理解当前研究的关键问题、关键技术及其未来趋势提供了一个全面的视角,有助于推动自然语言处理和人工智能在情感分析领域的深入发展。
细粒度中文情感词典则是这一领域中一个非常有价值的资源,它为处理中文文本的情感提供了更深入、更精确的参考。 细粒度中文情感词典,正如其名,不仅包含了常见的积极、消极词汇,还可能涵盖更为细致的情感分类,如...
在线评论的细粒度情感分析对于深刻理解商家和用户、挖掘用户情感等方面有至关重要的价值,并且在互联网行业有极其广泛的应用,主要用于个性化推荐、智能搜索、产品反馈、业务安全等。本次比赛我们提供了一个高质量的...
项目包含:100类大型细粒度飞机图像检测数据集(yolo标注格式),数据保存按照文件夹保存,经测试,可直接用作目标检测数据集,无需额外处理。 用于细粒度图像检测任务,FGVC数据 【数据总大小】341 MB 【数据集...
"基于细粒度多通道卷积神经网络的文本情感分析" 本文主要介绍了一种基于细粒度多通道卷积神经网络的文本情感分析模型。该模型旨在解决传统单通道卷积神经网络在文本情感分析中的两个主要问题:一是无法充分利用文本...
人工智能-项目实践-情感分析-基于LSTM网络与自注意力机制对中文评论进行细粒度情感分析 题目介绍 该题目为《细粒度用户评论情感分析》,来源于“全球AI挑战赛”。https://challenger.ai/competition/fsauor2018 ...
Al_challenger细粒度情感分析数据集,包含ai_challenger_sentiment_analysis_testa_20180816、ai_challenger_sentiment_analysis_trainingset_20180816、ai_challenger_sentiment_analysis_validationset_20180816