利用Oracle数据库实现三层架构(oracle三层结构)
利用Oracle数据库实现三层架构
随着信息化时代的到来,企业信息化建设的需求越来越大,不同规模、不同行业的企业都在进行信息系统建设。而信息系统的核心是数据库,而数据库架构最为常见的就是三层架构。本文将介绍如何利用Oracle数据库实现三层架构。
一、三层架构介绍
三层架构是将一个复杂的信息系统分为三个层次:表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。每个层次都有其独立的功能,各层次之间通过标准化接口进行交流。应用程序将业务逻辑与表示逻辑分离,从而更容易实现功能的扩展和修改,更方便地进行维护。
二、Oracle数据库三层架构示意图
Oracle数据库的三层架构如下图所示:
表示层:表示层通常是由应用程序实现的,它向用户提供友好的界面,用户可以通过界面直接操作数据。应用程序通过调用接口与业务逻辑层交互。
业务逻辑层:业务逻辑层主要实现各种业务操作的逻辑处理,它对上层的表示层提供服务,对下层的数据访问层进行调用,从而实现各种业务功能的操作。
数据访问层:数据访问层是向用户提供数据接口的底层模块,主要负责与数据库进行交互,包括增删改查等数据操作。业务逻辑层通过数据访问层提供的接口对数据进行增删改查的操作。
三、Oracle数据库三层架构的实现
以Java Web开发为例,业务逻辑层与表示层都可以使用Java语言实现,而数据访问层最好使用Oracle数据库提供的PL/SQL语言来实现。
下面以一个简单的示例来进行说明。
先创建一个表示层页面和一个数据访问层的存储过程。
表示层页面:
数据访问层的存储过程:
CREATE OR REPLACE PROCEDURE add_student(
sno IN VARCHAR2,
sname IN VARCHAR2,
sex IN CHAR,
birthday IN DATE,
phone IN VARCHAR2,
address IN VARCHAR2) AS
BEGIN
INSERT INTO student(sno,sname,sex,birthday,phone,address)
VALUES(sno,sname,sex,birthday,phone,address);
COMMIT;
END;
然后,需要在业务逻辑层中编写一个方法来调用数据访问层的存储过程。
Java代码:
public class StudentDao {
private Connection conn;
private CallableStatement callStmt;
public boolean add(Student stu) {
boolean flag = false;
try {
this.conn =DBUtils.getConnection();
String sql=”{ call add_student(?,?,?,?,?,?) }”;
callStmt = conn.prepareCall(sql);
callStmt.setString(1,stu.getSno());
callStmt.setString(2,stu.getSname());
callStmt.setString(3,stu.getSex());
callStmt.setDate(4,new java.sql.Date(stu.getBirthday().getTime()));
callStmt.setString(5,stu.getPhone());
callStmt.setString(6,stu.getAddress());
int r = callStmt.executeUpdate();
if(r>0) {
flag=true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtils.close(callStmt);
DBUtils.close(conn);
}
return flag;
}
}
在表示层中调用业务逻辑层的Java方法实现数据的添加。
Java代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String sno=request.getParameter(“sno”);
String sname=request.getParameter(“sname”);
String sex=request.getParameter(“sex”);
Date birthday=Date.valueOf(request.getParameter(“birthday”));
String phone=request.getParameter(“phone”);
String address=request.getParameter(“address”);
Student stu=new Student(sno,sname,sex,birthday,phone,address);
StudentDao dao=new StudentDao();
boolean flag=dao.add(stu);
if(flag) {
request.setAttribute(“msg”, “添加成功!”);
}else {
request.setAttribute(“msg”, “添加失败!”);
}
request.getRequestDispatcher(“/add.jsp”).forward(request, response);
}
这样,一个简单的三层架构的应用就可以成功实现了。
四、总结
本文简要地介绍了Oracle数据库的三层架构的实现过程。三层架构可以将复杂的信息系统分解为三个较为独立的层次,这有利于系统设计、实现和维护。在具体实现时,应该注重三层各自模块功能的划分,以及模块之间的接口设计。