`
ysen
  • 浏览: 122148 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何换数据库(未使用任何框架)

阅读更多

 

因为之前使用的mysql 现在想转为Oracle实现

如何改能降低最大的工作量

DaoFactory 类 里面组合了 Dao的实例

ServiceFactory 类 里面 组合了 Service实例

 ps:这两个类不算工厂类 应将类名Factory改成Contextg更合适

具体下面贴代码

 

 

 

public class DaoFactory
{
    private static IAccountDao accountDao = new AccountDaoImpl();
    private static IAffairDao affairDao = new AffairDaoImpl();
    private static IStateDao stateDao = new StateDaoImpl();
    private static IPersonnelDao personnelDao = new PersonnelDaoImpl();
    private static IAnnouncementDao announcementDao = new AnnouncementDaoImpl();
    private static IStatDao statDao = new StatDaoImpl();

    private static IDepartmentDao departmentDao = new DepartmentDaoImpl();
    private static IPositionDao positionDao = new PositionDaoImpl();
    private static IInformationDao informationDao = new InformationDaoImpl();
    private static IDaysDao daysDao = new DaysDaoImpl();
    private static IWeekDao weekDao = new WeekDaoImpl();
    private static IWorkContentDao workContentDao = new WorkContentDaoImpl();

    private static IEmployeeManageDao employeeManageDao = new EmployeeManageDaoImpl();
    private static IHolidayDao holidayDao = new HolidayDaoImpl();
    private static IHolidayTypeDao holidayTypeDao = new HolidayTypeDaoImpl();

    private static IMessageDao messageDao = new MessageDaoImpl();

    
    
    
    public static IMessageDao getMessageDao()
    {
        return messageDao;
    }

    public static IAccountDao getAccountDao()
    {
        return accountDao;
    }

    public static IAffairDao getAffairDao()
    {
        return affairDao;
    }


    public static IStateDao getStateDao()
    {
        return stateDao;
    }

    public static IPersonnelDao getPersonnelDao()
    {
        return personnelDao;
    }

    public static IAnnouncementDao getAnnouncementDao()
    {
        return announcementDao;
    }

    public static IStatDao getStatDao()
    {
        return statDao;
    }

    public static IDepartmentDao getDepartmentDao()
    {
        return departmentDao;
    }

    public static IPositionDao getPositionDao()
    {
        return positionDao;
    }

    public static IInformationDao getInformationDao()
    {
        return informationDao;
    }

    public static IDaysDao getDaysDao()
    {
        return daysDao;
    }

    public static IWeekDao getWeekDao()
    {
        return weekDao;
    }

    public static IWorkContentDao getWorkContentDao()
    {
        return workContentDao;
    }

    public static IEmployeeManageDao getEmployeeManageDao()
    {
        return employeeManageDao;
    }

    public static IHolidayDao getHolidayDao()
    {
        return holidayDao;
    }

    public static IHolidayTypeDao getHolidayTypeDao()
    {
        return holidayTypeDao;
    }

}

 

 

public class ServiceFactory
{
    private static IAccountService accountService = new AccountServiceImpl();
    private static IAffixService affixService = new AffixServiceImpl();
    private static IAffairService affairService = new AffairServiceImpl();
    private static IStateService stateService = new StateServiceImpl();
    private static IPersonnelService personnelService = new PersonnelServiceImpl();
    private static IAnnouncementService announcementService = new AnnouncementServiceImpl();
    private static IStatService statService = new StatServiceImpl();
    private static IDepartmentService departmentService = new DepartmentServiceImpl();
    private static IWorkContentService workContentService = new WorkContentServiceImpl();
    private static IInformationService informationService = new InformationServiceImpl();
    private static IPositionService positionService = new PositionServiceImpl();
    private static IDaysService daysService = new DaysServiceImpl();
    private static IWeekService weekService = new WeekServiceImpl();
    private static IEmployeeManageService employeeManageService = new EmployeeServiceImpl();
    private static IHolidayService holidayService = new HolidayServiceImpl();
    private static IHolidayTypeService holidayTypeService = new HolidayTypeServiceImpl();
    private static IMessageService messageService = new MessageServiceImpl();
    
   
    
    public static IMessageService getMessageService()
    {
        return messageService;
    }

    public static IEmployeeManageService getEmployeeManageService()
    {
        return employeeManageService;
    }

    public static IAccountService getAccountService()
    {
        return accountService;
    }
    
    public static IAffixService getAffixService()
    {
        return affixService;
    }
    
    public static IAffairService getAffairService()
    {
        return affairService;
    }
    
    public static IStateService getStateService()
    {
        return stateService;
    }
    
    public static IPersonnelService getPersonnelService()
    {
        return personnelService;
    }
    
    public static IAnnouncementService getAnnouncementService()
    {
        return announcementService;
    }
    
    public static IStatService getStatService()
    {
        return statService;
    }
    
    public static IDepartmentService getDepartmentService()
    {
        return departmentService;
    }
    
    public static IWorkContentService getWorkContentService()
    {
        return workContentService;
    }
    
    public static IInformationService getInformationService()
    {
        return informationService;
    }
    
    public static IPositionService getPositionService()
    {
        return positionService;
    }
    
    public static IDaysService getDaysService()
    {
        return daysService;
    }
    
    public static IWeekService getWeekService()
    {
        return weekService;
    }

    
    public static IHolidayService getHolidayService()
    {
        return holidayService;
    }

    
    public static IHolidayTypeService getHolidayTypeService()
    {
        return holidayTypeService;
    }
    
    
    
}

 

  例如 AccountServiceImpl 的实现

 

 

public class AccountServiceImpl implements IAccountService
{ 
    public AccountBean login(String name, String password)
    {
        return DaoFactory.getAccountDao().login(name, password);
    }
}

 

分享到:
评论
19 楼 mercyblitz 2010-03-22  
F.B.I 写道
如果你要换数据库首先如果有框架ibtais你肯定不要选,hibernate对数据量不大的情况下还是可行
另外 spring jdbcTemple自己封装下也一般可行,如果不选任何框架,那只有自己封装了,我个人愚见,项目里使用spring还是不错的,最起码new这个词在我的代码里,看不到的,感觉极其丑陋。



为啥new就丑陋呢?
18 楼 ysen 2010-01-04  
想想用反射加配置文件的方法
17 楼 ssuupv 2009-12-31  
spring 可以零配置了
16 楼 hz86655032 2009-12-31  
关键看你DAOIMPL是怎么实现的,一般用hibernate之类的框架你就改改DATASOURCE就可以了.你要是手动JDBC实现的DAOIMPL,那只能自己再手动写套ORACLE的实现了.
15 楼 tibetjungle 2009-12-21  
  底层数据库切换,主要是对DAO层的影响。现在lz要从Mysql切换到Oracle,如果dao写中使用的sql脚本在Mysql和Oracle都适用,就不存在切换的障碍。
  如果dao中写了一些mysql专用的代码,直接修改就可以了啊。其实用框架也存在类似需要修改代码的问题啊(特别是Ibatis)。no silver bullet.
14 楼 hjw622979 2009-12-21  
重写DaoFactory,如果用Spring简单些
13 楼 antD 2009-12-20  
呵呵,我只觉得主要是数据库里的存储过程,和函数可能要改.其他的可能改动很少.像分页,连库串,驱动.如果分装的好改动不会太大.
12 楼 kjj 2009-12-19  
datasource+facade+daoImpl 这样行了吧!!
11 楼 bigkai13 2009-12-19  
说说我的思想,如果不使用框架,那就自己写一个数据库的XML配置文件。如果你使用了存储过程或者某种厂商特定的SQL语言,那么你就的改代码了
10 楼 myworkfirst 2009-12-19  
   1.把数据库连接串放在xml里
    2.把数据库操作的sql语句放在xml里。 如果是A数据库,就调用a_sql.xml,如果是b数据库,就调用b_sql.xml

   这样可适配,挺方便,对程序代码无影响
9 楼 mikeandmore 2009-12-19  
不支持,会有很多code duplication
8 楼 Kensai 2009-12-18  
DAO都没有用接口直接写的类?没有框架的情况下,直接替换实现是理所当然的吧。

像楼主这样,我完全看不出如果有方言冲突的DAO实现你如何解决?

而且即便以前没用数据库方面的框架,替换数据库DAO以后用Digest把DAO实现和Service实现用配置的方式拼装起来不是更简单吗?

要隔离数据库这一层,没有注入实在想不出能够在不改代码的情况下有很好的办法。
7 楼 freespace521 2009-12-18  
LZ 看下 spring 的scan 扫描 就不用写那么多配置了
6 楼 Nightlee 2009-12-18  
不知道楼主想问什么,现在的代码已经是接口依赖了,替换DAO实现是很自然的事情,难道LZ是想不该daoimpl来实现?
5 楼 ysen 2009-12-18  
spring 的bean 配置太多了也烦啊
4 楼 vvggsky 2009-12-18  
重新实现DAO,然后再DAOFactory里面修改获取代码
3 楼 F.B.I 2009-12-18  
如果你要换数据库首先如果有框架ibtais你肯定不要选,hibernate对数据量不大的情况下还是可行
另外 spring jdbcTemple自己封装下也一般可行,如果不选任何框架,那只有自己封装了,我个人愚见,项目里使用spring还是不错的,最起码new这个词在我的代码里,看不到的,感觉极其丑陋。
2 楼 ysen 2009-12-18  
  

public class DaoFactory   
{   
    private static IAccountDao accountDao ;
    private static IAffairDao affairDao ;  
    private static IStateDao stateDao ; 
    private static IPersonnelDao personnelDao ;   
    private static IAnnouncementDao announcementDao;
    private static IStatDao statDao;
  
    private static IDepartmentDao departmentDao ;
    private static IPositionDao positionDao  ;
    private static IInformationDao informationDao ;
    private static IDaysDao daysDao ;
    private static IWeekDao weekDao ;
    private static IWorkContentDao workContentDao ;  
    private static IEmployeeManageDao employeeManageDao;
    private static IHolidayDao holidayDao ;
    private static IHolidayTypeDao holidayTypeDao  ;

  
    private static IMessageDao messageDao ;

     static{
       //读取配置文件 获得数据库类型

        //下面实例化
       
        if(TYPE==mysql ){ 
         // 实例化
           IAccountService accountService = new AccountServiceImpl();   
...
          }else if(TYPE==oracle ){

          IAccountService accountService = new AccountServiceOracleImpl();   

...
          }



     }  
       
       
    public static IMessageDao getMessageDao()   
    {   
        return messageDao;   
    }   
  
    public static IAccountDao getAccountDao()   
    {   
        return accountDao;   
    }   
  
    public static IAffairDao getAffairDao()   
    {   
        return affairDao;   
    }   
  
  
    public static IStateDao getStateDao()   
    {   
        return stateDao;   
    }   
  
    public static IPersonnelDao getPersonnelDao()   
    {   
        return personnelDao;   
    }   
  
    public static IAnnouncementDao getAnnouncementDao()   
    {   
        return announcementDao;   
    }   
  
    public static IStatDao getStatDao()   
    {   
        return statDao;   
    }   
  
    public static IDepartmentDao getDepartmentDao()   
    {   
        return departmentDao;   
    }   
  
    public static IPositionDao getPositionDao()   
    {   
        return positionDao;   
    }   
  
    public static IInformationDao getInformationDao()   
    {   
        return informationDao;   
    }   
  
    public static IDaysDao getDaysDao()   
    {   
        return daysDao;   
    }   
  
    public static IWeekDao getWeekDao()   
    {   
        return weekDao;   
    }   
  
    public static IWorkContentDao getWorkContentDao()   
    {   
        return workContentDao;   
    }   
  
    public static IEmployeeManageDao getEmployeeManageDao()   
    {   
        return employeeManageDao;   
    }   
  
    public static IHolidayDao getHolidayDao()   
    {   
        return holidayDao;   
    }   
  
    public static IHolidayTypeDao getHolidayTypeDao()   
    {   
        return holidayTypeDao;   
    }   
  
}  



但是却有if else 破坏了封装性

1 楼 ysen 2009-12-18  
ServiceFactory   类改不了了,因为servlet里面充斥着这样的代码

相关推荐

    数据库系统安全技术框架综述

    数据库系统安全技术框架综述数据库系统安全技术框架综述数据库系统安全技术框架综述

    android 各种数据库框架使用的Demo

    本Demo主要展示了如何在Android平台上使用各种数据库框架,包括SQLite、ORM(对象关系映射)框架如Room、GreenDao等,以及一些流行的第三方库如Realm和SugarORM。下面将详细介绍这些数据库框架的使用方法。 1. ...

    JAVA数据库访问控制框架

    这个数据库访问控制框架工程名为dbmanager,目前的版本是1.1.8,只支持MYSQL数据库,在未来的两周时间内我会发布后续扩展版本... 本框架的具体用法和结构请大家参考我的博客文章《JAVA数据库访问控制框架设计与使用》。

    若依框架集成达梦数据库完整源码

    - **调整数据源配置**:若依框架默认使用Druid数据源,可能需要根据达梦数据库的特点进行调整。 - **测试连接**:编写测试代码验证数据库连接是否正常,确保可以成功执行SQL语句。 **4. 数据操作** - **SQL适配**...

    数据库系统的安全框架及各层安全技术

    数据库系统的安全除依赖自身内部的安全机制外,还与外部网络环境、应用环境、从业人员素质等因素息息相关,因此,从广义上讲,数据库系统的安全框架可以划分为三个层次:⑴网络系统层次;⑵宿主操作系统层次;⑶...

    数据库框架

    数据库框架是现代软件开发中不可或缺的一部分,特别是在处理大量数据存储和检索时。它提供了一种高效、便捷的方式来管理和操作数据库,使得开发人员可以专注于业务逻辑而不是底层的SQL语句。在本文中,我们将深入...

    java数据库框架技术研究

    本文主要探讨的是“java数据库框架技术研究”,尤其是如何在未使用Hibernate仅依赖Struts时,构建一个自定义的小型数据库操作框架。 在早期的Java Web开发中,Struts是一个非常流行的动作(Action)框架,它主要...

    android数据库框架

    在Android应用开发中,数据库...总之,这个"android数据库框架"旨在简化Android应用中的数据库操作,提供高效、易用的工具,以应对各种数据库管理需求。了解并掌握这些关键点,对于高效开发和维护Android应用至关重要。

    Python的Flask框架与数据库连接的教程

    本教程主要介绍了如何在Python的Flask框架中连接数据库,特别强调了这一技能是学习Flask框架的基础知识点。在实际开发中,数据库是保存和管理数据的重要组件,因此掌握Flask与数据库的交互对于开发Web应用至关重要。...

    基于Java的数据库应用框架的研究设计

    【部分内容】提及的是网络教学平台在教育中的应用,与Java数据库框架设计主题关联性不大,但我们可以将这两个主题结合起来,讨论Java在数据库应用和教育信息化中的作用。 在Java数据库应用框架方面,Java作为一种...

    python面试数据库框架笔记总结

    通过以上分析,我们可以看出,Python面试中的数据库框架部分涵盖广泛,从基础的数据库操作到高级的ORM使用,再到数据库设计和优化,都需要深入理解和实践。而“study”这个文件名可能包含了对这些知识的学习和研究...

    golang常用库之操作数据库的orm框架-gorm基本使用详解

    golang常用库:操作数据库的orm框架-gorm基本使用 一:字段映射-模型定义 gorm中通常用struct来映射字段. gorm教程中叫模型定义 比如我们定义一个模型Model: type User struct { gorm.Model UserId int64 `gorm:...

    ssm框架在线医院挂号系统mysql数据库.zip

    ssm框架在线医院挂号系统mysql数据库.zipssm框架在线医院挂号系统mysql数据库.zipssm框架在线医院挂号系统mysql数据库.zipssm框架在线医院挂号系统mysql数据库.zipssm框架在线医院挂号系统mysql数据库.zipssm框架...

    Go语言的数据库操作与ORM框架使用.md

    如何在 Go 语言中进行数据库操作与使用 ORM 框架,包括从使用 Go 原生 `database/sql` 包进行数据库连接、查询、增删改、事务处理,到选择和使用常见的 ORM 框架如 GORM、SQLBoiler 和 Ent。首先,文章详细讲解了 `...

    thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例

    本文实例讲述了thinkPHP5框架实现多数据库连接,跨数据连接查询操作。分享给大家供大家参考,具体如下: 1. 多数据库连接 方法1:在需要连接其他数据库的地方,使用Db::connect()方法动态连接数据库,方法参数为...

    JDBC数据库连接框架

    在eclipse上用Java语言进行项目开发时用到的一个JDBC框架,用于连接数据库。可以解压之后找到里面的数据库驱动信息,把数据库名和密码换成自己的,就可以重新打包放进eclipse里面用。

    基于对象数据库的扩展Java集合框架.pdf

    基于对象数据库的Java集合框架的扩展可以使程序员操作对象数据库就像使用普通的Java集合框架一样方便。该框架提供了一个统一的接口,允许程序员使用Java集合框架来访问和操作对象数据库。该框架还提供了高效的数据...

    自己动手模仿Hibernate写数据库框架

    【标题】"自己动手模仿Hibernate写数据库框架"揭示了本次讨论的核心内容——尝试构建一个类似于Hibernate的数据库操作框架。Hibernate是一个流行的Java ORM(对象关系映射)框架,它简化了数据库与Java对象之间的...

    chloe orm 数据库框架

    封装了oracle mysql sqllite sqlserver等数据库框架,采用了ORM框架模式。使用起来简单,易用,可以去官方网站查看具体的API

    SSH框架整合对数据库作增删查改操作 源代码+数据库

    SSH框架整合是对Spring、Struts和Hibernate这三个开源框架的集成,它们在Web开发中被广泛使用,特别是对于企业级应用。SSH框架的整合提供了一种高效、灵活且可扩展的解决方案,使得开发者能够轻松地进行数据库的操作...

Global site tag (gtag.js) - Google Analytics