- 热门文章:
- · 在Unix/Linux上令(java)JVM支持中文输出
- · 简单的Oracle存储过程的创建方法(菜鸟级)
- · 利用游标返回结果集的的例子(Oracle 存储过程)
- · 《Java极限编程》(Java Tool for Extreme Programming)读书笔记 (4)
- · linux环境下Apache+Resin的配置
- · 实战 Eclipse ,Jigloo, PostgreSQL,JDBC 开发数据库查询应用系统起步
- · 使用request传递数据
- · 在nanowar中引入AOP
- · 格式化输入日期时间控件 JieFormattedDateBox
- · webshpere studio application developer 中 jndi 访问DATASOURCE DB.7.2
- · Jmeter使用之脚本录制回放
- · jad文件的错误代码,分享
上一篇:Annotations中文翻译 >>
使用dao.Processor管理数据持久化对象
原文
dao.Processor是在多数据库多实体环境下以JAVA对象的数据对象化和持久化的核心类,它的使用方
法总结如下:
一、与Entity绑定;
针对dao.entity对象,可与EJB.entity设置兼容。与entity兼容的典型使用方法是:
Processor pro =ProcessorFactory.getProcessorInstance(ent);
或:
Processor pro =Processor.getInstance(ent);
或:
processor pro =Procesor.getInstance();
pro.setEntity(entity); 或;pro.setEntity(String ent);
效果一样;
使用的方式是: pro.open();这时侯pro会从entity的设置中通过datasource或ConnectionManager获得指定的数据库连接;
pro.close(),关闭清空所有的数据资源;
二、与DAO接口绑定;
Pro可以绑定一个或者多个DAO对象,这时侯Processor显得象一个服务SPI;但每一个DAO对象只能绑定一个Processor实例。
可以通过find获得dao对象;
DAO dao =pro.findByID(in id)或 pro.findByName(String name)获得相应entity的实例对象,每个实例相当于数据库中的一行记录;
DAO dao =pro.findByValue(String key,String value);//根据给定的条件返回DAO对象;
dao.insert();dao.update();dao.delete()等方法相应通过接口调用pro.insert(DAO dao)等几个同名方法;可以由容器管理这几个方法,保持与数据库的同步持久性。
dao.isExist(),该对象是否存在;
DAO dao =pro.getDao(String sql);//其实是直接用sql获得dao对象;
三、与Query绑定;
dao.Processor的另一个使用方法是与dao.Query对象同步。Query是由dao.xml或其他xml定义的包含sql的查询容器,典型设置如下:
insert into bbsthread (author,sourceid,views,replys,authorid,pubdate,alias,topic,content,name,oldpath,oldsource) values (${author},${sourceid},${views},${replys},${authorid},${pubdate},${alias},${topic},${content},${name},${oldpath},${oldsource})
Query通过Query.addVarian(name,value),然后使用Query.getSqlStatement()获得完整的sql语句;
Processor.setQuery(Query qry)设入Query;
String msg =pro.execute();//如果执行正常反回空,否则返回错误信息;
或ArrayList alist =pro.executeQuery();这要求在entity有效的情况下返回空或者是该entity的对象查询列(适用于select型的Query);
或Resultset rs =pro.getResultSet(Query qry);四、直接执行Sql;
dao.Processor可以直接执行sql;
对于查询型的语句可以直接通过ResultSet rs =pro.getResultSet(sql);
或者:String msg =pro.doUpdate(sql);直接执行sql执行语句;
通过 ArrayList alist =pro.getResultList(String sql);//使用entity设定的Class类型,要求entity不为空
或ArrayList alist =pro.getResultList(String sql,String sclss); //DAO接口的class名称;
或ArrayList alist =pro.getResultList(String sql,Class cls);
这几个重叠的方法得到相应的查询结果对象列;
ArrayList alist =pro.getResultList(String[] conditions,String sOrd);//这个方法要求enty已经设好,按给定的更新的conditions条件集或order语句返回排序对象列;
五、扩展的方法:
ArrayList alist =pro.getStringList(Query qry);//返回的是String型的列;
BatchDelete(int[] ids),BatchResume(int[] ids); BatchClear(int[] ids),几个Batch方法,要求在entity已经设定的基础上批执行指定的id集的所有记录。
六、获取connnection的方法;主要通过ConnectionManager获取数据库连接;
有三个可能的途径;一是通过entity所属的获得需要的连接名;二是通过Query的getConn获得需要的连接名;三是通过setConnection直接获得连接名;
下一篇:在Unix/Linux上令(java)JVM支持中文输出 >>
相关文章:
- · 最安全的加密算法 (摘自温少的blog)
- · Eclipse Form程序设计指南(1)
- · J2EE学习过程(节选)
- · 新兴开放源码J2EE应用平台
- · struts 学习笔记(一)--搭建环境
- · struts超简单入门(-)
- · 《Java极限编程》(Java Tool for Extreme Programming)读书笔记 (2)
- · Resin配置SSL说明
- · 利用XMLBuddy在Eclipse中开发XML
- · 知识库API(JSR-170)提交最终草案
- · 使用java.util.Calendar返回间隔天数
- · 为JEdit设置墙纸(add wallpaper for jedit)
- · java日记:学习java一年体会4
- · int i=0;i=i++;i=?//简单问题背后的不简单道理
- · "package中的javac,java用法" && "制作可执行jar文件"
- · Struts心得—DispatchAction使用日记
- · Imagemagick备忘
- · 我的乱码之路——JSP与MySQL交互的中文乱码解决方案及总结
- · Tomcat下配置MySQL数据库连接池
- · WebWork2源码分析续三
- · WebWork2源码分析续二
- · WebWork2源码分析续一
- · WebWork2源码分析
- · 刚运行了 Azureus ,给我的感觉是这界面真不象是Java 写的,发誓看完这套代码!
- · [JAVA]变量作用域的问题
- · 我眼中的Java经典书籍
- · 编写自己的登录与访问控制模块
- · [Eclipse笔记]作为Java IDE的Eclipse有多流行?看看今年TheServerSide的Java研讨会上做的一个调查。
- · J2SE 5.0的新特性---Autoboxing
- · 如何在windows NT 下安装jboss为服务?(How to install jboss as Windows NT OS Service?)
- · What is SOA?----------对SOA的思考,以及由此想到的人类社会的发展
- · 介绍一些 Java NIO 的学习文章,以方便各位的学习!
- · 《java深度历险》读书笔记(一)
- · Velocity A template engine OR A Rule engine OR Both
- · 2005 JDJ Readers Choice Awards - Best Java Book Nominees:
- · javascript事件查询综合
- · 让我感觉很爽的CachedRowSet
- · java日记:学习java一年体会3
