此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【qfs_v】截止到2008-07-06 21:01:38的历史汇总数据(不包括此帖):
发帖的总数量:13 发帖的总分数:170
结贴的总数量:12 结贴的总分数:170
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:0
结贴的百分比:92.31 % 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
值得尊敬
楼主【qfs_v】截止到2008-07-06 21:01:38的历史汇总数据(不包括此帖):
发帖的总数量:13 发帖的总分数:170
结贴的总数量:12 结贴的总分数:170
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:0
结贴的百分比:92.31 % 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
值得尊敬
关于把单例模式应用到数据库connection的问题较为复杂,如果是简单地把一个connection对象封存在单例对象中,那么在J2EE环境中这是错误的。如果数据库连接做成单例模式也就是说系统只会存在一个数据库连接实例,大家公用。实例不可以并发使用。因此存在排队,单例模式管理是需要排队的。资源有两种,一种需要排队,一种不需要排队,或者需要一种复杂的排队,譬如数据库就是复杂的排队问题,系统的排队是不可避免的,应该由数据库引擎自行解决。解决方式就是纪录的locking,而locking不应该由Java程序解决。尽量将排队的工作交给更低一层来做,这样可以获得更高的效率。
但是在单用户系统中这并不是什么严重的问题,因为在某一个时刻只有一个用户在使用,唯一的问题就是系统可能需要几个connection,譬如两个、三个等,而不是一个。
J2EE服务器系统中单例模式可以用来管理一个数据库连接池(connection pool)。单例模式可以用来保存这样一个connection pool,在初始化的时候创建譬如100个connection对象,然后再需要的时候提供一个,用过之后返回到pool中。如果不是用单例模式的话,这个pool存在哪里,就是一个问题。最后可能只好存到Application对象中。
上面的是节选