JAVA优化DAO层

JAVA优化DAO层,第1张

采用批量提交:

String insertSql = "insert into user(name,address) values(,)";

Session session = getHibernateTemplate()getSessionFactory()openSession();

Connection conn = sessionconnection();

PrepareStatement stmt = connprepareStatement(insertSql);

// 方式1:自动提交

connsetAutoCommit(true);

for(int i = 0; i++; i<10000) {

    stmtsetString(1, "testName");

    stmtsetString(2, "testAddress");

    stmtexecute();

}

// 方式2:批量提交

connsetAutoCommit(false);

for(int i = 0; i++; i<10000) {

    stmtsetString(1, "testName");

    stmtsetString(2, "testAddress");

    stmtaddBatch();

    if (i % 100 == 0) {

        stmtexecuteBatch();

        conncommit();

    }

}

stmtexecuteBatch();

conncommit();

// 关闭session

sessionclose();

J2EE 开发人员使用数据访问对象(Data Access Object DAO)设计模式,以便将低级别的数据访问逻辑与高级别的业务逻辑分离。实现 DAO 模式涉及比编写数据访问代码更多的内容。

数据访问对象(Data Acess Object) 模式

一环境

根据数据源不同,数据访问也不同。根据存储的类型(关系数据库、面向对象数据库、文件等等)和供应商实现不同,持久性存储(比如数据库)的访问差别也很大。

二问题

许多真是的J2EE应用程序需要在一定程度上使用持久性数据。对于许多应用程序,持久性存储是使用不同的机制实现的,并且用来访问这些不同的持久性存储机制的API也有很大的不同。

比如,应用程序使用实体bean(这里应该是指BMP的bean,CMP的bean已大大降低了与RDBMS的耦合)的分布式组件来表示持久性数据,或者使用JDBC API来访问驻留在某关系数据库管理系统(RDBMS)中的数据,这些组件中包含连接性性和数据访问代码会引入这些组件与数据源实现之间的紧密耦合。组件中这类代码依赖性使应用程序从某种数据源迁移到其他种类的数据源将变得非常麻烦和困难。当数据源变化时,组件也需要改变,以便于能够处理新类型的数据源。

(举个例子来说,我们UPTEL系统是使用JDBC API对 ORACLE数据库进行连接和数据访问的,这些JDBC API与SQL语句散布在系统中,当我们需要将UPTEL迁移到其他RDBMS时,比如曾经迁移到INFORMIX,就面临重写数据库连接和访问数据的模块。)

三作用力

1诸如bean管理的实体bean、会话bean、servlet等组件往往需要从持久性存储数据源中检索数据,以及进行数据存储等 *** 作。

2根据产品供应商的不同,持久性存储API差别也很大,这些API和其能力同样根据存储的类型不同也有差别,这样存在以下缺点,即访问这些独立系统的API很不统一。

3组件需要透明于实际的持久性存储或者数据源实现,以便于提供到不同供应商产品、不同存储类型和不同数据源类型的更容易的移植性。

四解决方案

使用数据访问对象(DAO)模式来抽象和封装所有对数据源的访问。DAO管理着与数据源的连接以便检索和存储数据。

DAO实现了用来 *** 作数据源的访问机制。数据源可以时RDBMS,LDAP,File等。依赖于DAO的业务组件为其客户端使用DAO提供更简单的接口。DAO完全向客户端隐藏了数据源实现细节。由于当低层数据源实现变化时,DAO向客户端提供的接口不会变化,所有该模式允许DAO调整到不同的存储模式,而不会影响其客户端或者业务组件。重要的是,DAO充当组件和数据源之间的适配器。

(按照这个理论,如果我们UPTEL系统使用了DAO模式,就可以无缝的从ORACLE迁移到任何一个RDBMS了。梦想总是很完美的,且看看DAO模式如何实现)

>

你好,你的问法本身有些不妥,dao就属于应用中的一层。可能你想说的是以下的情况:

初级DAO模式:

例如::写一个类 *** 作1张表 针对这张表的所有 *** 作都以方法的形式写在这个类中 1个 *** 作对应1个方法要求是外部通过调用这个类的方法达到 *** 作某张表的目的时不需要写任何和数据库以及JDBC相关的代码,这个类的命名就是XXDAO

比如表叫做 t_goods 商品表那么 *** 作它的DAO就叫GoodsDAO

高级DAO模式:

例如:即DAO工厂模式,多个XXDAO实现同一个接口或者继承同一个基类,编写一个工厂类通过工厂模式(简单工厂模式或利用反射动态加载均可)获得接口或基类对象,内部实际上封装返回的是具体的XXDAO类的对象。简单的说即是在1的基础上将创建具体的XXDAO对象的方式由new变为工厂模式实现

例如:UserDAO dao = DAOFactorycreate();

daosave()

daodelete

以上就是关于JAVA优化DAO层全部的内容,包括:JAVA优化DAO层、Java架构中DAO干什么用的、java中Dao模式怎么分的层 啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9348278.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存