我有一个数据库连接管理类(获取和关闭连接),通用的DAO类(通用的增删改查),另外有一些Dao实现类(针对具体的表)。
我现在是基于JSP Servlet下的MVC模式,还没有用到SSH
请问这些类写成单例模式是否好呢?请从性能和隐患等方面分析一下,在线等专家 

解决方案 »

  1.   

    还是要看你的访问量的,如果写成单例模式,访问量又比较大,那么在同步的作用下,会造成数据库访问等待时间加长。
    如果访问量不算大,写成单例模式可以节省内存开销,也减少频繁实例化Dao对象的负担,还是蛮不错呢。自己权衡吧。
      

  2.   

    在访问量较大,又不想频繁实例化Dao对象,那推荐使用池技术。
      

  3.   

    谢谢的mouyong全面分析,很受用 
      

  4.   

    可以选择单例。
    如果楼主的dao实现类中不包含和涉及dao实现类中的成员变量,那么在多线程并发调用时也不存在任何问题。
      

  5.   

    一般都这是样做的,只要你每次调用方法都new 一个或从池中取出一个connection 这样是没有并发的问题的(保证每次调用,对应新的connection).如果没有用其它框架,如一些小项目中,也不一定要用接口,这样你可以把这些方法写成类方法,这样也很不错的
      

  6.   

    对了,想继续问一下,多个线程同时访问单例模式的一个对象,会不会造成延迟等待。
    比如用户A在用单例模式的实例调用一个方法,那么用户B要用同一个对象是否要等A执行完方法才能执行B所调用的。
    注:除了创建实例的方法以外,其他方法均没有加同步锁。
      

  7.   

    未加synchronized的方法可以同时被多个线程调用,不影响速度,不过有个疑问:
    创建这唯一的实例的方法楼主给加了synchronized,难道楼主还有可能再次调用这个方法??这还是单例么?