JDBC 相关知识(七)

lgl669 2009-06-15
七、OOAD and Database Design
O/R  maping:
  java  database
35

J2EE @ zxw
内存对象 表中的记录
属性 字段
类 表
OID PK
注:OID:object ID,唯一标识一个对象的ID;
------------------------------------------------------------------------------------------------------------------------
OID唯一:
范围:一个类中,一个类层次中(有继承关系的),所有类中
------------------------------------------------------------------------------------------------------------------------
获取唯一的OID的几种方式:
SingleRow方式:一个只有一个字段的表,用来存放唯一的OID;每个用户取到值之后,都要更新表中数
据;
建立类:com.briup.oid.SingleRow.java
高低值方式:oid由高值和低值组成,其中高值在会话开始时,可从单行表中取得;低值在应用程序中取
得;
    取到之后进行更新,然后连接起来,即将低值追加到高值的后面;
A:high=1000(来自于数据库)          low=1 (用户自己设定)  
         high+""+low=10001 这个值就是OID的值,减少了和数据库交流的次数,提高性能。
建立类:com.briup.oid.HighLow.java
------------------------------------------------------------------------------------------------------------------------
继承关系的映射:
多态 更新维护 出具报表
每一个类 支持 比较容易 不方便
具体的类 不支持 比较困难 比较方便
类层次 支持 比较方便 比较方便
注:多态,即一个表里存放多种类型的信息
------------------------------------------------------------------------------------------------------------------------
数据库表之间的关系通过主外键体现
one-to-one://双向
类:
             User{                =====>  Address{
      Address address; User user;       
              //通过用户找到地址                       //通过地址找到用户
} }
表:
    User(id,name,addressid references Address(id))
    Address(id,city,...)
one-to-many://双向
类:
36

J2EE @ zxw
    Order{                =====>   Orderline{
List orderlines Order order;
=new ArrayList();
}
表:
            Oreder(id,style,...)
    Orderline(id,product,orderid,references Order(id))
注:一对多关系,表中的外键放在多的一端;
}
many-to-many://双向
类:
    Student{               =====>    Course{
List course List students
=new ArrayList(); =new ArrayList();
} }
关联类:
Student_Course{
Student student;
Course  course;
double  grade;
}
表:
    Student(id,name,courses)
    Course(id,name,students)//这样的关联是很有问题的哦,为此引入关联表;
所以表应如下:
            Student(id,name)
    Course(id,name)
关联表:
    Student_Course(
                studentid  references Student(id);
courseid   references Course(id);
grade double
                 )
java属性=======>数据库字段
派生属性:能由其他的属性推算出来的属性;
派生属性不需要映射成数据库表中的字段,如年龄和出生日期,知一即知另一个;
建立类:
com.briup.orm.pojo.Order.java
com.briup.orm.pojo.OrderLine.java
com.briup.orm.dao.OrderDao.java
------------------------------------------------------------------------------------------------------------------------
应用程序分层架构的好处:
1.将大的复杂的项目分成小的层次;
2.有利于硬件的扩容;
3.有利于功能的重用;
软件层的划分:
37

J2EE @ zxw
1. 逻辑上划分: 2.物理上划分:
   表现层(View)     二层
   模型层(Model)     三层
   控制层(Controller)     多层
常见分层:
三层架构:
1.表示层:应用同客户的接口,可用来判断用户输入,显示应用输出;
           技术:Swing,AWT,JSP,Html,scc,javascript,....                      
----------------------------------------------------------------------------
2.控制层(Controller)  : Mapping(映射,转换)
        将请求转发给合适的业务逻辑层处理;
        将业务逻辑层处理结果转发给合适的表现层显示;
        技术:  Servlet
3.业务逻辑层(模型层)(Model):处理具体的业务;
        技术:JavaBean,EJB
4.持久层:和数据库进行交互;
        技术:jdbc,hibernate,jdo,ibatis
-----------------------------------------------------------------------------
5.数据库
Global site tag (gtag.js) - Google Analytics