📄 使用说明.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0044)http://www.easyjf.com/easydbo/quickstart.htm -->
<HTML><HEAD><TITLE>Easyjf.com(简易java框架)|让j2ee程序开发变得更加轻松、简单</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META
content="Java,J2EE,Jsp,EasyJ,AspectJ,AOP,SOA,Java EE,构件,中间件,Tomcat,JBoss,Spring,Hibernate,Struts,EasyJWeb,JDO,EJB,UML"
name=keywords>
<META
content=Easyjf.com(简易java框架),包括当今最流行的Java框架(Spring,Hibernate,Struts,EasyJWeb,EasyJFramework,EJB,JDO,Velocity)介绍、参考资料、教程、源码等,提供简单实用的j2ee开发工具及构件产品,让j2ee程序开发变得更加轻松、简单!
name=description><LINK href="readme_files/css.css" type=text/css rel=stylesheet>
<SCRIPT>
function doSearch()
{
return false;
}
</SCRIPT>
<META content="MSHTML 6.00.3790.418" name=GENERATOR></HEAD>
<BODY text=#000000 bgColor=#ffffff leftMargin=0 topMargin=0 marginwidth="0"
marginheight="0">
<TABLE cellSpacing=0 cellPadding=0 width=778 align=center border=0>
<TBODY>
<TR>
<TD align=middle>
<TABLE height=106 cellSpacing=0 cellPadding=0 width=778 align=center
border=0>
<TBODY>
<TR>
<TD width=205>
<TABLE cellSpacing=1 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD> </TD></TR>
<TR>
<TD><IMG height=40 src="readme_files/logo.gif" width=175
align=absMiddle></TD></TR></TBODY></TABLE></TD>
<TD vAlign=top width=559 height=78>
<TABLE height="100%" width="100%" border=0>
<TBODY>
<TR>
<TD align=right width="100%" bgColor=#ffffff height=15><IMG
height=11 src="readme_files/li1.gif" width=10><A title=设为首页
onclick="var strHref=window.location.href;this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.easyjf.com');return false"
href="http://www.easyjf.com/#"><FONT
color=#000000>设为首页</FONT></A> <IMG height=11
src="readme_files/li1.gif" width=10><A title=把easyjf.com加入收藏夹
onclick="window.external.addFavorite(location.href,document.title+'--www.easyjf.com');return false;"
href="http://www.easyjf.com/easydbo/quickstart.htm#"><FONT
color=#000000>加入收藏</FONT></A> <IMG height=11
src="readme_files/li1.gif" width=10><A title=联系方式
href="http://www.easyjf.com/aboutus.htm"><FONT
color=#000000>关于我们</FONT></A></TD></TR>
<TR>
<TD background=readme_files/ad.gif
height=53></TD></TR></TBODY></TABLE></TD></TR>
<TR align=middle bgColor=#006699>
<TD colSpan=2 height=28><A
href="http://www.easyjf.com/index.htm"><FONT
color=#ffffff>首页</FONT></A> | <A
href="http://www.easyjf.com/announce.htm"><FONT
color=#ffffff>公告</FONT></A> | <A
href="http://www.easyjf.com/docs.htm"><FONT
color=#ffffff>参考资料</FONT></A> | <A
href="http://www.easyjf.com/tutorial.htm"><FONT
color=#ffffff>教程</FONT></A> | <A
href="http://www.easyjf.com/framework.htm"><FONT
color=#ffffff>框架/设计</FONT></A> | <A
href="http://www.easyjf.com/download.htm"><FONT
color=#ffffff>源码/下载</FONT></A> | <A
href="http://www.easyjf.com/component.htm"><FONT
color=#ffffff>构件产品</FONT></A> | <A
href="http://www.easyjf.com/myrss/"><FONT
color=#ffffff>MyRSS</FONT></A> </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE
style="BORDER-RIGHT: #ececec 1px solid; BORDER-TOP: #ececec 1px solid; BORDER-LEFT: #ececec 1px solid; BORDER-BOTTOM: #ececec 1px solid"
cellSpacing=0 cellPadding=0 width=778 align=center border=0>
<TBODY>
<TR>
<TD vAlign=top align=middle height=100>
<TABLE width="100%" border=0>
<TBODY>
<TR>
<TD>
<TABLE width="100%" border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=2 cellPadding=3 width="100%" align=center
bgColor=#ececec border=0>
<TBODY>
<TR>
<TD bgColor=#ffffff height=40>
<P align=center><FONT color=#003399
size=3><STRONG>使用对象-关系映射(ORM)系统中间件提升软件开发效率及质量</STRONG></FONT></P></TD></TR></TBODY></TABLE></TD></TR>
<TR bgColor=#f6f6f4>
<TD height=2></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD vAlign=top align=left>
<P align=center>作者:蔡世友 来源:www.easyjf.com</P>
<P><STRONG>一、什么是对象-关系映射(ORM)? </STRONG></P>
<P> 对象-关系映射(Object/Relation
Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。<BR>
<BR><STRONG>二、为什么要引入对象-关系映射中间件?</STRONG><BR>
在开发关系数据库的系统时,可以通过SQL语句读取及操作关系数据库数据。在Java领域,可以直接通过JDBC编程来访问数据库。JDBC可以说是JAVA访问关系数据库的最原始、最直接的方法。这种方式的优点是运行效率高,缺点是在Java程序代码中嵌入大量SQL语句,冗余是不可避免的,开发人员常常发现自己在一次又一次地编写相同的普通代码,如获得连接、准备语句、循环结果集以及其他一些
JDBC
特定元素,使得项目难以维护。特别是当涉及到非常多的关系数据表、需要在多个不同类型的关系数据库系统中使用时,通过在程序中使用JDBC开发实施起来更加困难。<BR>
在开发基于数据应用为主的软件系统时,引入对象-关系映射中间件是提高开发效率、提升软件产品的可维护、扩展性的现实需要。实践表明,在基于数据处理为主的企业级应程序开发中,通过引入对象-关系映射中间件,可以节省与对象持久化有关的差不多35%的编程工作量,同时提升软件产品可维护及易扩展性,提升软件产品质量。<BR>
因此,在开发企业级应用时,有必要通过引入对象-关系映射系统中间件,实现数据库的快速开发。企业可以通过JDBC编程来开发单独的持久化层,把数据库访问操作封装起来,提供简洁的API,供业务层统一调用,实现自己的ORM系统中间件。<BR>
当然,一个成熟的对象-关系映射中间件产品,不只是简单的把内存中的对象持久化到数据库、把数据库中的关系数据加载到内存中,还要保证系统频繁地访问数据库的性能,降低访问数据库的频率,需要引入多线程、缓存、事务管理等很多细节,涉及到的技术比较复杂,因此,我们更多是使用市场上优秀的ORM系统中间件产品。<BR>
<BR><STRONG>三、当前JAVA主流的对象-关系映射中间件产品?</STRONG><BR> 对象关系映射程序(Object
Relational Mappers,ORM)有多种形式。在 Java领域,大多数流行的 ORM
都可以实现完整的域模型映射,它的目标是将整层的对象和行为映射到数据库表。当前主流的 ORM 中间件产品主要有:<BR>
Hibernate(重点推荐)<BR> JDO<BR>iBatis<BR> EJB Entities 3<BR> EJB
Entity Beans 2.x<BR> TopLink<BR>
在众多的ORM中间件产品中,Hibernate是笔者重点推荐的。Hibernate是一个基于Java的开放源代码的持久化中间件,它对JDBC做了轻量级封装,不仅提供ORM映射服务,还提供数据查询和数据缓存功能,Java开发人员可以方便地通过Hibernate
API来操纵数据库。现在,越来越多的Java开发人员把Hibernate作为企业应用和关系数据库之间的中间件。</P>
<P>四<STRONG>、使用EasyDBO实现简单的对象-关系映射</STRONG><BR> EasyDBO是由<A
href="http://www.easyjf.com/">简易java框架网(www.easyjf.com)</A>开发的一个适合中小型软件数据库开发的java数据持久层框架,系统参考hibernate、JDO等,结合中小项目软件的开发实际,实现简单的Java对象到关系数据的映射。EasyDBO由于比较简单,比较适合于中小企业及个人开发使用,EasyDBO当前还处于测试阶段、是一个简易但不太成熟的对象-关系映射开源中间件。<BR>
EasyDBO的源代码非常简单,有一点Java知识的人基本上都能读懂,因此,选择EasyDBO作本文的示例主要目的在于让读者快速进入ORM系统的世界,理解对象-关系数据库实质及实现原理。<BR>
EasyDBO考虑的是最简单的对象-关系映射,简单到可以不使用任何配置文件就实现对象-关系的映射。EasyDBO源码主要包括com.easyjf.dbo、com.easyjf.dbo.config、com.easyjf.dbo.sql三个包。其中com.easyjf.dbo是框架的核心、实现了对象-关系的转换、JDBC API的封装以及用户接口支持等,com.easyjf.dbo.config实现配置文件的管理,com.easyjf.dbo.sql实现数据库的简单Sql语句的生成及多数据库支持的扩展。<BR>
在当前推出的测试版本中,程序员使用EasyDBO操作数据库主要关注EasyJDO类提供的方法及原数据对象DBObject类、IObject接口即可。</P>
<P><STRONG>五、使用EasyDBO的开发数据库应用程序示例</STRONG><BR>
下面我们看看使用EasyDBO是怎么样实现数据库的开发。<BR>
假设一个留言版系统存放留言信息关系数据表(message)的结构为:<BR> cid: varchar 16 主键<BR>
title: varchar 50<BR> content: text <BR> inputUser: varchar
16<BR> inputTime: datetime <BR> status: int <BR>
<BR>相应java中的类Message定义为<BR> import java.util.Date;<BR> import
java.util.List;<BR> import com.easyjf.dbo.EasyJDB;<BR> import
com.easyjf.dbo.IObject;<BR>
//实现com.easyjf.dbo.IObject接口从而使得你的对象无需要配置文件即可与关系数据表映射<BR> public
class Message implements IObject {<BR> private String cid;<BR>
private String title;<BR> private String content;<BR> private
String inputUser;<BR> private Date inputTime;<BR> private
Integer status;<BR> public String getTableName() { <BR> return
"message";<BR> }<BR> public String getKeyField() {<BR><BR>
return "cid";<BR> }<BR> public String getKeyGenerator() { <BR>
return "com.easyjf.dbo.IdGenerator";<BR> }<BR> public String
getCid() {<BR> return cid;<BR> }<BR> public void setCid(String
cid) {<BR> this.cid = cid;<BR> }<BR> public String
getContent() {<BR> return content;<BR> }<BR> public void
setContent(String content) {<BR> this.content = content;<BR>
}<BR> public java.util.Date getInputTime() {<BR> return
inputTime;<BR> }<BR> public void setInputTime(java.util.Date
inputTime) {<BR> this.inputTime = inputTime;<BR> }<BR> public
String getInputUser() {<BR> return inputUser;<BR> }<BR> public
void setInputUser(String inputUser) {<BR> this.inputUser =
inputUser;<BR> }<BR> public Integer getStatus() {<BR> return
status;<BR> }<BR> public void setStatus(Integer status) {<BR>
this.status = status;<BR> }<BR> public String getTitle() {<BR>
return title;<BR> }<BR> public void setTitle(String title)
{<BR> this.title = title;<BR> }<BR><BR>
//把对象持久化(保存)到关系数据库中<BR> public boolean save()<BR> {<BR>
EasyJDB db=new EasyJDB();<BR> return db.saveOrUpdate(this);<BR>
}<BR> //从持久化存储设备数据库系统中永久删除对象<BR> public boolean del()<BR>
{<BR> EasyJDB db=EasyJDB.getInstance();<BR> return
db.del(this);<BR> }<BR> //通过主键id从数据库系统中读取数据,返回一个对象<BR> public
static Message read(String cid)<BR> {<BR> EasyJDB
db=EasyJDB.getInstance();<BR> return
(Message)db.get(Message.class,cid);<BR> }<BR>
//通过sql从数据库中查询符合条件的数据,返回对象列表<BR> public static List query(String
sql)<BR> {<BR> EasyJDB db=EasyJDB.getInstance(); <BR> return
db.query(Message.class,sql);<BR> }<BR> //应用演示代码<BR> public
static void main(String[] args) {<BR> Message m=new
Message();<BR> m.setTitle("标题");<BR> m.setContent("内容");<BR>
m.setInputTime(new Date());<BR> m.setInputUser("test");<BR>
m.setStatus(new Integer(1));<BR> if(m.save())<BR> {<BR>
System.out.print("成功把对象保存到关系数据库中"); <BR> }<BR> else<BR>
{<BR> System.out.println("保存数据出错!");<BR> }<BR> //查询数据<BR>
List list=Message.query("1=1");<BR> if(list!=null){<BR> for(int
i=0;i<list.size();i++)<BR> {<BR> Message
message=(Message)list.get(i); <BR>
System.out.println("--------");<BR>
System.out.println("cid:"+message.getCid());<BR>
System.out.println("title:"+message.getTitle());<BR>
System.out.println("inputUser:"+message.getInputUser());<BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -