帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > JAVA编程
J2EE数据库设计入门
作者:佚名 发布时间:2005-04-02 来源:不详
 
  在开发J2EE应用程序时
目录,或一个网站的用户信
关系,再进行数据库的逻辑
,通常要找出应用程序中涉及到
息。我们会将这些信息放在数据
设计,把各种信息用不同的表来
的各种信息,比如一个公司的产品
库里,然后分析这些数据的属性和
存储。
  例如,要开发一个原料

信息查询系统,可以创建下面两

个表分别表示原料和相应的生产商

  table production (ID
, Name, Weight,Maker,Produce
rID, Price, Volume)
  table producer (ID, Name, Teleph
one, Address, Postcode)
  表production包含了ID、名称、重量
ID、生产者名、电话、地址、邮编。这两
、生产人、生产者ID、价格、体积。表producer包含
个表通过生产者ID相关联。
  数据库类的设计                                                                
  数据库相关类可以分成
实体类(Entity Class)和会话
类(Session Class)。
  实体类对应于表记录的封装,也就是
中的属性和记录中的字段是一一对应的。
记录、删除一条记录、查找记录和更新一
该类的一个实例对应于表中的一个记录。而且,该类
会话类对应于对表中所有记录的操作,比如增加一条
条记录。
  通过使用这种设计模式,就可以使程序模块化,便于开发和维护。                   
  在具体实现这种模式时
式中,我们很容易就发现可
,往往要根据具体的应用程序来
以用EJB来实现。
选用不同的实现技术。在上面的模

  EJB提出来的目的是用
应用系统,使用EJB来实现
性,可以使应用程序更加可
,比如事务处理、安全等,
应用不是分布式的,那么采
于提供一种分布式组件系统的开
能大大减轻编程的工作量。同时
靠,扩展性也大大加强。从而,
而是把重点放在怎样实现业务逻
用EJB有可能大大降低系统的性
发。如果应用程序是一个分布式的
,通过使用EJB容器的一些高级特
开发人员就不必关心一些底层技术
辑上。但是应该注意,如果开发的
能,因为EJB调用的开销很大。
  在不使用EJB技术的情况下该如何实现上面介绍的这个模式呢?                   
  我们以刚才的开发产品信息查询系统为例介绍实现方式。                           
  1.实体类的实现                                                             
  如前面讲到的,实体类
每个字段一一对应。必须注
对实例的操作并不能马上反
的每个实例与表中一个记录对应
意的是,实体类的实例是每个记
应到数据库的记录中。
。这样,实体类的属性应该和表的
录在内存中的对应,因此在程序中

  在实体类中,只是对数据的包装,因
getXX()方法。
此,该类仅需要一些基本的方法,即setXX()和

  下面是一个实体类,是对Production表的封装。                         
  class Production{                                            
  protected int  ID;                                          
  protected String Name;                                  
  protected String Weight;                              
  protected String Maker;                                
  protected int ProtectedID                          
  protected double Price;                                
  protected int Volume;                                    
  public void setID(int iID);                        
  public int getID();                                        
  public void setName(String sName);          
  public String getName();                              
  public void setWEIGHT(String sWEIGHT);  
  public String getWEIGHT();                          
  public void set Maker(String sMaker);    
  public String getMaker();                            
  public void setProtected ID(int iID);  
  public int  getProtected ID();                
  public void setPrice(double dPrice);      
  public double getPrice();                            
  public void setVolume(int iVolume);        
  public int getVolume();                                
  public Production(int iID, Strin
g sName, String sWEIGHT, int iProtected ID,
  double dPrice, int iVolume);                      
    };                                                                      
  同样也可以对表Producer进行封装。                                     
  2.会话类的实现                                                             
  会话类主要是对一个表
更新一条记录和查找一条记
起来,或将实例与表中的记
进行处理。这些操作可以是在表
录。这些操作的结果是将表中的
录对应起来。
中创建一条记录、删除一条记录、
记录和内存中的实体类的实例对应

  我们可以看一下对Production表的封装:                               
  class ProductionTable{                                  
  void Add(Production production);              
  void Delete(Production production);        
  void Update(Production production);        
  Collection findbyID(int iID);                    
  Collection findbyXXXX(XX,XX);                    
  Collection findbyPul
isherName(String sProducerNa
me);
    };                                                                      
  上面在类的申明中,Add()用于将内
Delete()用于删除数据库中的某一个记录
findbyXXXX()则对应于Select语句。
存中的一个Production实例映射到数据库中。
。Update()用于更新表中的一个记录。而

  上面只是简单的介绍了
作的一致性。
怎样实现实体类和会话类,在具

体的应用中,还要考虑到数据库操

  事务处理                                                                      
  为了确保对数据操作的完整和一致,在程序设计时要充分考虑到事务处理方面的问题。
  1.JDBC中怎样将多个SQL语句组合成一个事务。                           
  在JDBC中,当打开一个
当作一个事务,即每次执行
一个事务,要将auto-commi
连接对象Connection,缺省是au
一个语句,都会自动得到事务确
t模式屏蔽掉。
to-commit模式,每个SQL语句都被
认。为了能将多个SQL语句组合成

  在auto-commit模式屏蔽掉之后,如
。在commit()方法调用之后的所有SQL会
果不调用commit()方法,SQL语句不会得到事务确认
在方法commit()再次调用时得到确认。

  下面的代码是一个示范:                                                       

  con.setAutoCommit(false);                            

   PreparedStatement u
pdateSales=con.
  prepareStatement("UPDATE             
   COFFES SET SALES=? WHERE                           
   COF_NAME LIKE ?");                              
   updateSales.setInt(1,50);                          
   updateSales.setString                               
  (2,"Colombian");                          
   updateSales.executeUpdate();                    
   PreparedStatement updateTotal=c
on.
  prepareStatement(&qu
LIKE ?");
ot;UPDATE COFFEES SET TOTAL

=TOTAL+ ? WHERE COD_NAME

   updateTotal.setInt(1,50);                          
   updateTotal.setStri
ng(2,"Colo mbian")
;
   updateTotal.executeUpdate();                    
   con.commit(0;                                                  
   con.setAutoCommit(true);                            
  另外,在J2EE中,程序里可以使用JT
处理分布式的事务处理。另外,如果使用
来实现。
A来调用底层的JTS(JAVA Transaction Service)来
EJB,可以通过在描述文件中指定Transaction的属性



  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·Web Service 和 J2EE  (2005-04-02)
 ·J2EE开发n层应用  (2005-04-02)
 ·J2EE概述  (2005-04-02)
 ·J2EE应用部署(一):基础篇  (2005-04-02)
 ·J2EE应用部署(二):实践篇  (2005-04-02)
 ·J2EE应用部署(三):高级篇  (2005-04-02)
 ·J2EE:美好的蓝图  (2005-04-02)
 ·J2EE还是.NET,这是一个问题  (2005-04-02)
 ·解析J2EE中的安全问题  (2005-04-02)
 ·从商业角度分析J2EE与WINDOWS DN  (2005-04-02)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·谈谈JDBC
·JDBC专题介绍
·JDBC接口技术
·利用weblogic的POOL(连接池)连接
·Jsp中调用Oracle存储过程的小例子
·JSP数据库操作例程
·JSP数据库连接大全
·用连接池提高Servlet访问数据库的效
·一种简单JDBC连接池的实现
·数据库连接池Java实现小结
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统