加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 阅读中心 > 软件学习

J2EE数据库设计入门

时间:2014-05-04 10:05:34  来源:不详  作者:佚名
 
  在开发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的属性



来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
后牧工业区厂房1500平出租
后牧工业区厂房1500平
现实的童话公主艾米·罗森
现实的童话公主艾米·
科比专为大场面而生
科比专为大场面而生
“最美清洁工”原是《赤壁》宫女
“最美清洁工”原是《
相关文章
    无相关信息
栏目更新
栏目热门