当前位置:主页 >浩方电竞平台还能用么

浩方电竞平台还能用么:J2EE核心:iBatis DAO入门与进阶一

发布时间:02月07日 阅读:676



在核心J2EE模式中是这样先容DAO模式的:为了建立一个壮实的J2EE利用,应该将所有对数据源的造访操作抽象封装在一个公共API中。用法度榜样设计的说话来说,便是建立一个接口,接口中定义了此利用法度榜样中将会用到的所有事务措施。在这个利用法度榜样中,当必要和数据源进行交互的时刻则应用这个接口,并且编写一个零丁的类来实现这个接口在逻辑上对应这个特定的数据存储。

比如斟酌在iBatis: SQL Maps中的利用例子。这是一个Struts利用容许对一个关系表履行SELECT, INSERT, UPDATE和DELETE的SQL哀求。在这个利用中,应用SQL Maps做持续性框架。现在我们要改动这个利用,将这个关系表储存在一个XML文件中而不是存在关系数据库中,或者应用Hibernate来实现SELECT哀求,而用SQL Map来履行其他哀求,由于Hibernate供给了对高速缓存更好的支持。这样的改动很难实现,或者纵然我们能改动而实现了这个功能,也会是很纷乱的办理规划。

对付这类问题更好的办理措施是建立一个ContactDAO接口,在这个接口中定义处置惩罚SELECT, INSERT, UPDATE, 和DELETE 哀求的事务措施。然后根据不合的事务逻辑建立不合的类实现各个措施。以是可能会有一个类处置惩罚应用SQL Maps同关系表进行交互的环境,而别的一个类处置惩罚用XML文件寄放关系表而不是关系数据库的环境,等等。在项目中,根据实际的必要从不合的ContactDAO中选择响应的实现。这种关系见图1:

图1. ContactDAO 接口及实现

iBatis DAO是由Apache主持的开源框架项目,主要目标是为了办理这类问题。它容许在工程中以DAO模式为根基建立利用。这就意味着可以建立一个XML文件,并声明XMLContactDAO.java是ContactDAO的实现类,这个类知道若何从XML文件中读写数据。SQLMapContactDAO则知道若何用SQL Maps作为持续化框架与关系表进行交互。在工程中,假如向DAO框架提交一个必要XML的ContactDAO哀求,框架则会返回一个XMLContactDAO工具。同样的DAO框架供给了独一的接口处置惩罚事务治理,这个接口能实现与数据的存储要领无关。它同样斟酌了底层连接治理细节和初始化存储框架。

这篇文章是关于若何一步一步的在项目中利用iBatis DAO框架的根基指示。我们将由若何把SQL Maps一文中的利用实例改为利用DAO框架入手。然后,我们要评论争论DAO框架的构造。再下一步,我们关注事务治理是若何在DAO框架中获得支持的。着末一部分是关于若何建立自己的事务治理模块。

示例利用

首先,我们将SQL Maps一文中的例子改为利用DAO框架。

1.将ibatis-dao-2.jar文件复制到WEB-INF/lib目录下。

2.在Java源法度榜样的目录里新建一个如下的DAOMap.xml文件

清单1:

"com/sample/contact/dao/sqlmap/SqlMapConfig.xml"/>

DAOMap.xml是宣布iBatis DAO框架的设置设置设备摆设摆设文件。是根元素,每个元素描述了一种存储机制。在这个例子中只应用了SQL Maps来存储,以是我们这里只有一个元素。每种存储机制必须包孕一个

元素,这个元素描述连接它后面的数据存储所用的治理器,并且标记事务的边界。我们将在稍后再评论争论transactionManager。

元素还包括一组DAO用于描述其他的存储治理机制。在这个例子中,我们将天生一个应用SQL Maps存储的ContactDAO,以是在设置设置设备摆设摆设文件中添加一个ie标记来定义SQLMapContactDAO。

3.建立ContactDAO.java,如下:

单2:

public interface ContactDAO extends DAO {

public int insertContact(Contact contact);

public int updateContact(Contact contact);

public Contact se浩方电竞平台还能用么lectContact(int contactId);

public int deleteContact(int contactId);

}

ContactDAO.java定义了用户和一个关系表进行交互所必要用到的所有事务处置惩罚措施。请留意到ContactDAO.java中的所有浩方电竞平台还能用么措施都将一个Contact工具作为参数,这是一个用来携带数据的数据通报工具。

4.建立一个SQLMapContactDAO.java文件,如下

清单3:

public class SQLMapContactDAO ext浩方电竞平台还能用么ends

SqlMapDaoTemplate implements ContactDAO {

public SQLMapContactDAO(Dao浩方电竞平台还能用么Manager arg0) {

super(arg0);

}

public int deleteContact(int contactId) {

return super.delete("deleteContact",

new Integer(contactId));

}

public int insertContact(Contact contact) {

Integer contactId =(Integer)super.insert

("insertContact",contact);

return contact.getContactId();

}

public Contact selectContact(int contactId) {

return (Contact)super.queryForObject("getContact",

new Integer(contactId));

}

public int updateContact(Contact contact) {

return super.update("updateContact",contact);

}

}

SQLMapContactDAO是ContactDAO接口的详细实现,它用SQL Maps作为存储治理机制。留意到我们并没有写任何代码来或者初始化SQL Maps,或获得一个连接,或者在类中标注一个事务的边界。相反,我们承袭SqlMapDaoTemplate.java类,它帮我们处置惩罚下层的、反复的操作。我们在SQLMapContactDAO类中必要斟酌的独一的工作便是事务处置惩罚逻辑。

5.改动ContactSelectAction.java类中的execute()措施,如下:

清单4:

Contact contactForm = (Contact) form;

Reader reader=

Resources.getResourceAsReader("DAOMap.xml");

DaoManager daoManager =

DaoManagerBuilder.buildDaoManager(reader);

ContactDAO contactDAO =

(ContactDAO) daoManager.getDao(

ContactDAO.class,"sqlmap");

request.setAttribute("contactDetail",

contactDAO.selectContact(

contactForm.getContactId()));

着末一步是改动ContactSelectAction类中的execu浩方电竞平台还能用么te()措施,使它应用DAO框架。为了初始化DAO框架,我们必要一个为DAOMap.xml 筹备一个Reader工具。iBatis框架为我们供给了措施Resources.getResourceAsReader()来读取资本。一旦有了Reader工具来读取DAOMap.xml,就能将它们读取至DAOManagerBuilder.buildDaoManager(),返回一个DaoManager实例,将来用于与DAO框架进行交互。从理论上来说,应该在项目启动的时刻初始化DAO框架,在我们这个法度榜样中,可以将这个模块放入Struts插件中,然则为了简化这个例子,我们将初始化模块放入execute措施中。

有了DaoManager实例后,可以调用响应的接口和存储实现类(在元素中的id属性值)的getDao()措施。在我们的例子中,必要一个SQLMapContactDAO的实例,以因此ContactDAO为接口名称,“sqlmap”为存储机制。一旦实现了SQLMapContactDAO实例,就可以在调用此中的事务措施。



上一篇:雷竞技下载官方版:一棵小草的坚守新闻频道中国青年网
下一篇:电竞下载app送彩金:《环球时报》社评:向李文亮医生致以敬意