请教彭老师关于jdbc的问题,谢谢!

10-07-16 8dc
彭老师,请教你两个问题:

1. 一般情况下,通过jdbc连接获得Connection都会用到连接池。假设我不用连接池,自已写代码连接数据库,应不应该把获得Connection对象写成单例?我在网上也问过别人,别人说除非我在多线程处理上有很强的技术,否则不能把jdbc写成单例模式,对于这样的说法正确吗,你对单例的Connection是怎么看的?一个用户必须只能对应一个Connection吗?

2. 多线程并发问题只会出现在修改数据上,对于增加、删除、查询是不会有并发的情况存在的。那么假设我现在只需要查询数据库里的数据,可不可以把Connection写成单例,让多个用户都用一个Connection去查询数据库里的数据?

icycrystal4
2010-07-18 12:37
你设计成单例, 对数据的查询自然没有问题.

那涉及到更新的时候事务怎么控制?

oojdon
2010-07-18 22:51
2010年07月16日 21:14 "8dc"的内容
一个用户必须只能对应一个Connection吗? ...

应该是每次请求一个连接,方便快捷还安全,如果要控制事务就是用threadlocal。

现在流行的就是不共享。

xinchi
2010-07-19 21:53
每一个模式都是有适应的场景的,如果没有目的,而为了使用模式而使用模式,那还不如不用。

连接池是对数据库连接这种资源,进行的高效共享的封装,最好先明白连接池的机制。如果自己写数据库连接。要先问问自己为什么要这样做。

2010年07月16日 21:14 "8dc"的内容
一个用户必须只能对应一个Connection吗

如果一个用户一旦使用数据库,就会连续不断的使用,而且你也想把连接池分配连接的时间也省掉的话,就每一个用户用一个连接。但是这种情况非常少,可能只会出现在教科书上。

2010年07月16日 21:14 "8dc"的内容
可不可以把Connection写成单例,让多个用户都用一个Connection去查询数据库里的数据

如果你知道,数据库连接传递信息只能做完一个查询再作一个查询,那么请想一下在人多时,都用一个连接查询是什么结果?

还是那句话先明确自己的目的,了解周围的环境,然后再看哪个模式适用。

猜你喜欢