欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > PPT文档下载
 

数据访问层与业务逻辑层设计.ppt

  • 资源ID:6151500       资源大小:216KB        全文页数:29页
  • 资源格式: PPT        下载积分:9.9积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要9.9积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

数据访问层与业务逻辑层设计.ppt

第四章数据访问层与业务逻辑层设计 本章要点 使用连接池连接数据库及辅助类设计数据操作程序设计的基本方法博客网站数据访问类的设计数据分页的基本方法存储过程及其应用大对象存储的基本方法工厂模式与业务逻辑类设计 4 1使用连接池连接数据库 数据源与连接池在数据库的访问中 频繁连接和关闭数据库是非常费时的 一种改进的方法就是使用数据源技术 这种技术是 事先建立了多个数据库连接 并将这些连接保存在连接池 ConnectPool 中 Java程序访问数据库时 只需从连接池中取出空闲状态的数据库连接 当程序访问数据库结束 再将数据库连接放回连接池 这样做可以提高访问数据库的效率 数据源的核心接口是javax sql DataSource DataSource对象是由服务器提供的 因此不能在程序中采用创建一个实例的方式生成DataSource对象 而需要采用Java的另一个技术JNDI JavaNamingandDirectoryInterface 来获得DataSource对象的引用 JNDI是一种将对象和名字绑定的技术 对象工厂负责生产出对象 这些对象都和唯一的名字相绑定 程序中可以通过这个名字来获得对象的引用 在GlassFish中建立数据源在Tomcat中建立数据源 1 打开blog项目 配置文件 文件夹中的context xml文件 加入如下代码 2 如果使用数据源连接数据库 可按如下方式编写connect 方法 publicstaticConnectionconnect try Contextctx newInitialContext DataSourceds DataSource ctx lookup java comp env jdbc yb Connectioncon ds getConnection returncon catch Exceptionex returnnull 案例4 1博客网站的辅助类设计将常用的操作封装到类中 可以提高代码的重用性 简化程序设计 为此设计一个类MySQLHelper 用于连接MySQL数据库 封装建立连接 关闭结果集 关闭预处理 关闭连接等方法 并设计一个测试类TestMySQLHelperServlet 测试MySQLHelper的使用 连接成功显示如图4 7所示界面 否则显示如图4 8所示界面 技术要点 在程序中需要采用Java的另一个技术JNDI来获得DataSource对象的引用 Tomcat把DataSource作为一种可以配置的JNDI资源来处理 生成DataSource对象的工厂为mons dbcp BasicDataSourceFactory 在javax naming包中提供了Context接口 该接口提供了将对象和名字绑定 以及通过名字检索对象的方法 在应用中可以直接使用InitalContext类初始化Context 产生一个上下文对象 然后通过lookup 方法检索数据源对象 通过JNDI查找数据源 该JNDI为java comp jdbc yb 其中p env是tomcat固定的 tomcat提供的JNDI绑定都必须加该前缀 JDBC yb是定义数据源时给数据源起的名字 4 2数据的基本操作 数据操作的基本原理1 建立操作对象操作对象是指能执行SQL语句的对象 如Statement对象 PrepareStatement对象 建立这些对象 需要使用Connection对象 以建立Statement为例 建立的方法为 Statementstmt con createStatement con为连接对象PreparedStatement是SQL预处理类接口 使用其实现类来处理SQL能大大提高系统的执行效率 2 执行SQLStatement提供了三种执行SQL语句的方法 ResultSetexecuteQuery Stringsql 执行select语句 返回一个结果集 intexecuteUpdate Stringsql 执行update insert delete等不需要返回结果集的SQL语句 它返回一个整数 表示执行SQL语句影响的数据行数 booleanexecute Stringsql 用于执行多个结果集 多个更新结果 或者两者都有 的SQL语句 它返回一个boolean值 如果第一个结果是ResultSet对象 返回true 如果是整数 就返回false 取结果集时可以与getMoreResultSet getResultSet和getUpdateCount结合来对结果进行处理 PreparedStatement也有上述三个方法 但都不带参数 因为在建立PreparedStatement对象时已经指定SQL语句 3 获得查询结果如果SQL语句是查询语句 执行executeQuery 方法返回的是ResultSet对象 ResultSet对象是一个由查询结果构成的数据表 在ResultSet中隐含着一个数据行指针 可使用如下方法将指针移动到指定的数据行 booleanabsolute introw 将指针移动到结果集对象的某一行 booleanfirst 将指针移动到结果集对象的第一行 booleannext 将指针移动到当前行的下一行 booleanprevious 将指针移动到当前行的前一行 booleanlast 将指针移动到当前行的最后一行 查询数据1 查询一条记录如果查询的结果是一条记录 例如 根据主键查询 就是一条记录 需要用if语句判断 并且可把查询的结果存放在一个对象中 2 查询多条记录如果查询的结果可能有多条记录 这时需要用while循环 把每条记录存成一个对象 并把所有的对象添到一个集合里 更新数据1 添加记录添加记录的SQL语句格式如下 insertinto表名 字段名列表 values 值列表 例如 在文章类别数据表中添加一条记录 insertintoyb category blog id category title values 2 编程相关 在Java中 使用PreparedStatement添加记录较方便 基本的步骤是 首先创建一个带参的SQL语句 然后利用连接对象建立PreparedStatement对象 再调用PreparedStatement对象的executeUpdate 方法 该方法返回一个整数 如果大于0表示添加成功 否则添加失败 2 修改记录修改记录的SQL语句格式如下 update表名set字段1 字段值1 字段2 字段值2 where特定条件例如 将分类号为3的分类名称修改为 热点话题 updateyb categorysetcategory title 热点话题 wherecategory id 3在Java中 修改记录与插入记录类似 只是SQL语句不同 3 删除记录删除记录的SQL语句格式如下 deletefrom表名where特定条件例如 删除分类号为3的文章分类 deletefromyb categorywherecategory id 3删除记录一般以主键作为条件 案例4 2博客网站数据访问类的设计博客网站的各数据访问类的设计模式基本相同 这里先给出YbBlogDao和YbCategoryDao的设计 技术要点 在blog dao包中建立YbBlogDao和YbCategoryDao类 YbBlogDao实现IYbBlogDao接口 YbCategoryDao实现IYbCategoryDao接口 每个操作方法都是先调用MySQLHelper类的connect 方法建立连接 然后建立预处理对象 通过预处理对象的executeUpdate 方法实现数据更新 通过预处理对象的executeQuery 方法实现数据查询 4 3数据分页 按页查询数据按页查询数据 即不是一次性查出所有数据 而是根据给定的页号和和页的大小查出所需的数据 1 使用查询语句实现分页对于MySQL数据库 Select语句中的limit选项可以用于分页查询 con MySQLHelper connect Stringsql select fromys articlelimit pageNo 1 pageSize pageSize ps con prepareStatement sql rs ps executeQuery 对于SqlServer数据库 分页方法与MySQL不同的 查询语句如下 Stringsql selecttop pageSize fromyb articlewherearticle idnotin selecttop pageNo 1 pageSize article idfromyb article 2 使用PreparedStatement对象实现分页在建立PreparedStatement对象时需要指定可滚动游标 然后通过程序来实现分页 参见如下代码 pstmt con prepareStatement sql ResultSet TYPE SCROLL SENSITIVE ResultSet CONCUR READ ONLY rs ps executeQuery rs absolute pageNo 1 pageSize inti 0 while rs next 例4 3分页工具类及几个数据访问类设计设计一个类PageList 该类实现了Plist接口 用于存放数据 同时具有分页功能 能够根据记录数 页大小 页号等能够生成页棒 此外 设计博文的数据访问类YbArticleDao 评论的数据访问类YbReviewDao以及相册的数据访问类YbPictureDao 技术要点 分页工具类命名为PageList 该类实现Plist接口 包含两个属性pageBar和pageNumBar 分别用于存放普通分页棒和数字分页棒 setPage 传递分页参数 记录总数 页大小 页号 网址 生成分页棒 getPageBar 和getPageNumBar 分别用于返回普通分页棒和数字分页棒 YbArticleDAO类实现IYbArticleDao接口 YbReviewDao实现IybReviewDao接口 YbPictureDAO类实现IYbPictureDao接口 数据分页采用MySQL查询语句的limit选项实现 4 4使用存储过程 存储过程的定义存储过程 StoredProcedure 是一组为了完成特定功能的SQL语句集 经编译后存储在数据库中 用户通过指定存储过程的名字并给出参数 如果该存储过程带有参数 来执行它 存储过程是数据库中的一个重要对象 在数据库应用程序中经常使用存储过程 在MySQL中定义存储过程的基本格式如下 CREATEPROCEDURE过程名 IN OUT INOUT 参数名参数类型 BEGIN有效的SQL语句END其中IN OUT INOUT的含义 IN 输入参数 用来向过程传递数据 OUT 输出参数 用来从过程返回数据 INOUT 既可输入 也可输出 例如 在MySQL中定义如下存储过程查询在博文表中有博文的分类名 DELIMITER createprocedurefindCategoryNames beginselectdistincta category titlefromyb categorya yb articlebwherea category id b category id end DELIMITER 调用存储过程在Java中利用CallableStatement对象执行数据库中的存储过程 CallableStatement对象可以通过Connection对象的prepareCall 方法得到 该方法调用中需要用一个转义子句字符串参数 转义子句的语法如下 没有返回值 没有参数 call存储过程名 没有返回值 有参数 call存储过程名 有返回值 有参数 call存储过程名 存储过程的返回值或输出参数需用registerOutParameter intindex intsqlType 方法登记 案例4 4使用存储过程分页查询博文修改YbArticleDao中的findSome 方法 使其通过调用存储过程查询博文 技术要点 在MySQL中建立存储过程findArticles 该存储过程同时查出记录和记录总数 通过Connection对象建立CallableStatement对象 通过CallableStatement调用存储过程findArticles 输入参数使用registerOutParameter方法注册 4 5大对象的存取 大对象存储的基本方法1 读取大对象在JDBC中有两个接口对应数据库中的BLOB和CLOB类型 java sql Blob和java sql Clob ResultSet提供了读取BLOB和CLOB类型的方法getBlob 和getClob 得到Blob或Clob的对象后 再进一步得到数据 2 存储大对象以流的方式保存大对象 PreparedStatement中的两个方法可用来将大对象写入数据库 voidsetBinaryStream intparameterIndex InputStreamx intlength 将标准输入流中的二进制数据写入数据库形成BLOB对象 voidsetCharactorStream intparameterIndex Readerreader intlength 将Reader流中的字符数据写入数据库形成CLOB对象 案例4 5设计用户数据访问类YbUserDao实现用户的数据访问类YbUserDao 用户的照片存储在数据库中 技术要点 在YbUserDao的实现方法和YbArticleDao类似 图像的存储采用字节数组的方法保存 4 6工厂模式与业务逻辑类设计 属性文件及其读取属性文件属性文件是一种特殊的文本文件 其扩展名一般为properties 这种文件由键值对构成 每个键值对的基本格式为 键名 值 读写属性文件在JAVA的包中 提供了专门用于操作属性文件的类 这个类就是java uitl Properties类 Properties类继承自Hashtable类 采用键值对的存储方式 并有专门的读写方法来读写属性文件 读取属性文件的基本步骤 1 将将文件读取到Properties类对象中 Propertiesprop newProperties 属性集合对象FileInputStreamfis newFileInputStream config properties 属性文件流prop load fis 将属性文件流装载到Properties对象中 2 使用Properties类提供的getProperty Stringkey 方法用来通过键名读取键值 StringybUserDao prop getProperty ybUserDao 获取属性值 工厂模式建立对象为了减少各层之间的耦合 采用工厂模式来建立对象 按照这种模式 使用对象的类不由自己来建立对象 而是由一个工厂类来建立对象 以业务逻辑层为例 业务逻辑层需要使用数据访问层对象 但在业务逻辑类中不直接建立数据访问类对象 而是使用工厂类建立数据访问类对象 工厂类放在mon包下 主要的原理是 在配置文件中描述实例 工厂类使用反射机制建立对象 具体的方法是 工厂类根据逻辑名到配置文件中获得实际的类名 然后利用如下语句建立对象 Objectobj Class forName className newInstance 案例4 6博客网站工厂模式实现及业务逻辑层设计在博客网站中建立一个工厂类 该类能够根据需要建立数据访问类对象 设计博客网站中的业务逻辑类 业务逻辑类中使用工厂类建立数据访问类对象 技术要点 用属性文件作为配置文件 在配置文件中描述实例 定义一个类Config 该类只包含一个静态变量 变量的类型为Properties 用于存放从配置文件中读取的数据 建立一个Servlet 并配置load on startup使其能在项目启动时自动启动 该Servlet中读取配置文件 将数据存在Config prop中 建立工厂类MyFactory 在该类中使用Class forName className newInstance 建立对象 业务逻辑类实现业务逻辑接口 在业务逻辑类中使用工厂类建立数据访问类对象

注意事项

本文(数据访问层与业务逻辑层设计.ppt)为本站会员(za****8)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!