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.数据库 |