文档章节

对 DAO 框架的初步构思

泥瓦匠BYSocket
 泥瓦匠BYSocket
发布于 2016/04/05 16:16
字数 442
阅读 277
收藏 2

对 DAO 框架的初步构思

基础:

  1. 内置支持JDBC、Spring JDBC和MyBatis数据库访问 -- 抽象提供一致的使用接口

  2. 默认三种DAO代理对象访,支持XML动态配置

  3. 不依赖Spring

升级:

  1. 插件式连接池

  2. 插件式支持Spring

  3. 事务

  4. 多数据源配置


1.内置支持JDBC、Spring JDBC和MyBatis数据库访问 -- 抽象提供一致的使用接口。

请看下面的代码SessionMgr接口:

SessionMgr<> {

    ()()}

代码中实现了简单的数据库操作会话的获取。对外暴露提供统一的接口。JDBC,SpringJDBC和Mybatis各会话管理实现类实现该接口。

自然这块还包括初始化,连接池,事务等工作。


2. XML动态配置

用户肯定说配置太麻烦了,那默认就是支持三种数据库操作会话。

但肯定会有独钟于其中一项的,比如Mybatis。请看下面一段XML配置:


  <!-- Session 管理器(可选) -->
  <!-- 可以配置多个,不同的 Session 管理器可使用不同的方式连接不同的数据库 -->
  <database-session-managers>
     <!-- name - 名称(必填),class - 管理器实现类(必填) -->
     <manager name="session-mgr-jdbc" class="org.fast.dao.jdbc.JDBCSessionMgr" />
     <manager name="session-mgr-mybatis" class="org.fast.dao.mybatis.MyBatisSessionMgr">
        <!-- 传递给 Session 管理器的初始化参数 -->
        <initialize-args>
           <!-- 第一个参数:Mapper接口包 -->
           <arg>vo\.mapper</arg>
           <!-- 第二个参数等 -->
           <arg></arg>
        </initialize-args>
     </manager>
  </database-session-managers>

但要考虑多数据源问题。。。 目前没想好


3. plugin式支持

    a) 插件式支持Spring

       只要在Spring配置一个Bean:

<bean id="userDao" class="org.fast.dao.DAOFacadeProxy" factory-method="create">
  <constructor-arg value="dao.mybatis.UserDao"/>
</bean>

DAOFacadeProxy是DAO类创建代理对象,会自动代理到需要操作的

    b) 插件式支持连接池


4. 事务


请大家对以上构思,提点建议或意见吧!

© 著作权归作者所有

泥瓦匠BYSocket

泥瓦匠BYSocket

粉丝 946
博文 169
码字总数 219665
作品 4
杭州
程序员
私信 提问
加载中

评论(1)

曾经的十字镐
曾经的十字镐
东西不错很期待,对个人也是种提升
陆地小神仙/jfast

JFast : Java Web MVC开发框架 + Restful服务端框架 全原创设计, 全新构思, 比使用普通SSH或者SSM开发效率提高5-10倍,如果真正使用Jfast进行开发,速度远超SSH,JFinal。 使用教程:参见 http...

陆地小神仙
2015/06/02
0
0
陈阳 2017-03-27 工作日报

1.原型设计初步调研与构思

陈阳_
2017/03/27
4
0
PWP , Pascal-Web-Page , Pascal Web 开发脚本编译器开发笔记

多年以来,我们用惯了 Pascal 来开发各种类似的程序和软件,得心应手,无所不能。唯独在 Web 开发和敏捷开发上有明显的不足。 网上也有几个开源的,但是性能和功能总是不理想。于是一直有自己...

LinSigong
2016/03/29
56
0
WebMIS v1.0.0 发布,灵活快速的自建 HMVC 框架

时隔2年的调整,WebMIS的PHP框架再次突破局限创新,整理的大量计算机编程基础知识,吸取大量php框架核心部分,自主研发了一套简洁、灵活、快速的PHP框架,提供了快速开发后台初步解决多用户、...

WebMIS
2018/05/22
657
0
项目范围管理学习(三):项目决策

3.1.1 需求识别 回答“做什么”的问题,是关于产品(服务)属性的描述。 3.1.2 需求识别特点: (1)工期和费用是需求识别的重要因素,也是获得产品成果的约束条件,并与产品的性能一起成为构...

孟飞阳
2016/07/07
309
0

没有更多内容

加载失败,请刷新页面

加载更多

skywalking(容器部署)

skywalking(容器部署) 标签(空格分隔): APM [toc] 1. Elasticsearch SkywalkingElasticsearch 5.X(部分功能报错、拓扑图不显示) Skywalking需要Elasticsearch 6.X docker network create......

JUKE
23分钟前
5
0
解决Unable to find a single main class from the following candidates [xxx,xxx]

一、问题描述 1.1 开发环境配置 pom.xml <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!--一定要对上springboot版本号,因......

TeddyIH
24分钟前
5
0
Dubbo服务限制大数据传输抛Data length too large: 13055248, max payload: 8388608解决方案

当dubbo服务提供者向消费层传输大数据容量数据时,会受到Dubbo的限制,报类似如下异常: 2019-08-23 11:04:31.711 [ DubboServerHandler-XX.XX.XX.XXX:20880-thread-87] - [ ERROR ] [com.al...

huangkejie
27分钟前
6
0
HashMap和ConcurrentHashMap的区别

为了线程安全,ConcurrentHashMap 引入了一个 “分段锁” 的概念。具体可以理解把一个大的 map 拆分成 N 个小的 Map 。最后再根据 key.hashcode( )来决定放到哪一个 hashmap 中去。 hashmap ...

Garphy
27分钟前
4
0
购买SSL证书需要注意哪些问题

为了保障网站的基本安全,为网站部署SSL证书,已经是一种常态了。各大浏览器对于安装了SSL证书的网站会更友好,并且不会发出“不安全”的提示。部署SSL证书之前首先得去给网站购买一个SSL证书...

安信证书
57分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部