Java Web应用技术与案例教程第四章 数据访问层与业务逻辑层设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 执行SQL Statement提供了三种执行SQL语句的方法:
ResultSet executeQuery(String sql):执行select 语句,返回一个结果集。 int executeUpdate(String sql):执行update、 insert、delete 等不需要返回结果集的SQL语句。它返回 一个整数,表示执行SQL语句影响的数据行数。 boolean execute(String sql):用于执行多个结果集、 多个更新结果(或者两者都有)的SQL语句。它返回一个 boolean值。如果第一个结果是ResultSet对象,返回 true;如果是整数,就返回false。取结果集时可以与 getMoreResultSet、getResultSet和 getUpdateCount结合来对结果进行处理。
数据源的核心接口是javax.sql.DataSource。 DataSource对象是由服务器提供的,因此不能在程 序中采用创建一个实例的方式生成DataSource对象, 而需要采用Java的另一个技术JNDI (Java Naming and Directory Interface),来获得DataSource对 象的引用。JNDI是一种将对象和名字绑定的技术,对 象工厂负责生产出对象,这些对象都和唯一的名字相 绑定。程序中可以通过这个名字来获得对象的引用。
在GlassFish中建立数据源 在Tomcat中建立数据源 (1)打开blog项目【配置文件】文件夹中的context.xml文件, 加入如下代码:
<!--在此处配置数据库连接池--> <Context antiJARLocking="true" path="/blog"> <Resource auth="Container" name="jdbc/yb" driverClassName="com.mysql.jdbc.Driver" maxActive="100" maxIdle="30" maxWait="10000" type="javax.sql.DataSource" url="jdbc:mysql://localhost/yb?autoReconnect=true" username="root" password="1234"/> </Context>
PreparedStatement也有上述三个方法,但都不带参 数,因为在建立PreparedStatement对象时已经指定 SQL语句。
3. 获得查询结果 如果SQL语句是查询语句,执行executeQuery()方法 返回的是ResultSet对象。 ResultSet对象是一个由查询结果构成的数据表。在 ResultSet中隐含着一个数据行指针,可使用如下方法 将指针移动到指定的数据行:
第四章 数据访问层与 业务逻辑层设计
本章要点
使用连接池连接数据库及辅助类设计 数据操作程序设计的基本方法 博客网站数据访问类的设计 数据分页的基本方法 存储过程及其应用 大对象存储的基本方法 工厂模式与业务逻辑类设计
4.1 使用连接池连接数据库
Hale Waihona Puke Baidu
数据源与连接池
在数据库的访问中,频繁连接和关闭数据库是 非常费时的。一种改进的方法就是使用数据源 技术。这种技术是,事先建立了多个数据库连 接,并将这些连接保存在连接池(Connect Pool)中,Java程序访问数据库时,只需从连 接池中取出空闲状态的数据库连接;当程序访 问数据库结束,再将数据库连接放回连接池, 这样做可以提高访问数据库的效率。
案例4-1博客网站的辅助类设计
将常用的操作封装到类中,可以提高代码的重用性,简化 程序设计。为此设计一个类MySQLHelper,用于连接 MySQL数据库,封装建立连接、关闭结果集、关闭预处 理、关闭连接等方法。并设计一个测试类 TestMySQLHelperServlet,测试MySQLHelper的使用。 连接成功显示如图4-7所示界面,否则显示如图4-8所示 界面。
4.2 数据的基本操作
数据操作的基本原理
1.建立操作对象
操作对象是指能执行SQL语句的对象,如 Statement对象、PrepareStatement对象。建立 这些对象,需要使用Connection对象。以建立 Statement为例,建立的方法为: Statement stmt = con.createStatement(); //con为连接对象 PreparedStatement是SQL预处理类接口,使用 其实现类来处理SQL能大大提高系统的执行效率。
〖技术要点〗
在程序中需要采用Java的另一个技术JNDI来获得 DataSource对象的引用。Tomcat把DataSource作为一种 可以配置的JNDI资源来处理。生成DataSource对象的工厂 为org.apache.commons.dbcp.BasicDataSourceFactory。 在javax.naming包中提供了Context接口,该接口提供了将 对象和名字绑定,以及通过名字检索对象的方法。在应用中可 以直接使用InitalContext类初始化Context,产生一个上下 文对象,然后通过lookup()方法检索数据源对象。 通过JNDI查找数据源,该JNDI为java:comp/jdbc/yb,其 中java.comp/env是tomcat固定的,tomcat提供的JNDI绑 定都必须加该前缀;JDBC/yb是定义数据源时给数据源起的 名字。
(2)如果使用数据源连接数据库,可按如下方式编写connect() 方法: public static Connection connect() { try { Context ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/yb"); Connection con = ds.getConnection(); return con; } catch (Exception ex) { return null; } }