关于数据库增删改的问题请高手回答

现有2个JSP程序(x.jsp/y.jsp)
x.jsp里有一个方法queryOrinsert(object obj)根据obj id查询表A的数据是否有记录,如果有返回,没有就插入一条数据.
y.jsp里有一个方法update(int id),根据用户id更新呢A表的记录。

服务器是集群环境。这2个jsp都是实时访问!访问量很大!困惑是这样的环境是否要将这2个方法都加上synchronized?本人不是很懂请高手回答!欢迎讨论!

作者: xxyyzz2011   发布时间: 2011-06-15

1) update(int id)如果找不到id会怎么做,会插入记录吗?如果不插入,则问题不大。
2) 就算有问题,这两个方法分别在两个jsp中,给这两个方法加上synchronized是没有用的。必须给他们分配一把公共锁才行。

作者: alexandertech   发布时间: 2011-06-15

1 如果找不到ID就不插入了。但是这样的情况应该不会有。
2 我现在是不理解是否需要在这些方法 上加 “同步”避免插入的数据不准确

作者: xxyyzz2011   发布时间: 2011-06-15

那不太需要担心这两个方法之间冲突

但是你的queryOrinsert方法本身就可能会有冲突,当不同客户端同时调用它时可能会有冲突,导致重复插入数据库。

但是在Jsp文件中给它加synchronized是没用的,要把它放到一个静态类里去成为静态方法再加synchronized才会起作用。

作者: alexandertech   发布时间: 2011-06-15

我是在JSP里声明了这些方法。如何避免重复插入数据的问题集群环境里?
在JSP里声明了方法是可以的。例如<%!public void queryOrinsert(Object obj){.....}%>
还有一个困惑。这2个x.jsp/y.jsp是频繁被访问的。这样客户端频繁调用连续操作数据库会不会造成表锁住啊
我是菜鸟!谢谢回答!

作者: xxyyzz2011   发布时间: 2011-06-15

有没有高手回答???????

作者: xxyyzz2011   发布时间: 2011-06-15

加上synchronized它,那就是同一时间只能有一个人在访问,这样可以吗?貌似不行。
主要是代码,写好一点,注意性能!这样不管多少都没问题了。
你不能动不动就加上它,限制访问,这样就不好了嘛!
除非你是在做银行金额这一块,那加上它是非须的!

作者: liutianxiong888   发布时间: 2011-06-15

支持楼上,在网络这块,要想其他办法的。

作者: qlong8807   发布时间: 2011-06-15

考虑到线程安全时
可以加

作者: TKD03072010   发布时间: 2011-06-15