关于同步的问题 一客户提交一远程方法,提交中,程序经过处理,修改数据库但是这同一客户同一时间2台电脑提交或者多个客户端提交,如何能禁止他同时提交而修改数据库错误而在同一时间,必须要允许其他用户提交过来请求.请问,如何能做到? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将修改数据库的方法设置成 synchronized在有..数据库的设计也要改那个叫什么来的....数据库设计本身也有防止这样的设计..而不完全依赖语言 sql中有一个叫做事务的概念意思就是我有几个操作 他们合并在一起是一个原子操作 不可以拆分的当一个事物提交的时候 事务中的所有操作都进行提交 如果失败的话 可以返回提交之前的状态将你的数据库操作变成事务就可以了 不知道你是通过什么来操作数据库中的数据的,如果是通过hibernate,那么操作数据库的是session,那可以用ThreadLocal线程池来维护本地session变量。用户拿到的都是一个独立的session,改变的都是自己的副本不会对其他的产生影响。不会存在线程上的问题。代码如下public class HibernateUtils { private static Configuration conf; private static SessionFactory factory; private static ThreadLocal<Session> tl; static { conf = new Configuration().configure(); factory = conf.buildSessionFactory(); tl = new ThreadLocal<Session>(); } /** * 获得session * @return 一个session实例,是线程安全的 */ public static Session getSession() { Session session = tl.get(); if(session == null) { session = factory.openSession(); tl.set(session); } return session; } /** * 关闭session */ public static void closeSession() { Session session = tl.get(); if(session != null) { session.close(); tl.set(null); } }}如果你用的是jdbc直接访问,那么可以通过事务处理机制来同步,因为如果多个线程同时操作一个数据,必然会出问题,事务会回滚,不会提交。connection.setAutoCommit(false),提交完成后,connection.commit(),再connection.setAutoCommit(true)。至于加synchronized 同步是多余的。 Java中子类不能继承父类的构造方法应如何理解 求日期正则表达式 gui对象转xml格式 session.createSQLQuery为什么不能更新数据库???急 大家帮忙瞧瞧,JTextField取值与数据库查寻语句对比问题! 怎么从文本文件入MYSQL数据库要这么长的时间啊? 请高手给我讲讲finally的这种特殊用法,我没有查到。 谁知道那里下载Visual Age for java的最新版本。 关于jdbc安装的问题。 一个jaiva线程同步的问题 请教关于图像绘制的问题。 初学java,请问系统配置问题
意思就是我有几个操作 他们合并在一起是一个原子操作 不可以拆分的
当一个事物提交的时候 事务中的所有操作都进行提交 如果失败的话 可以返回提交之前的状态
将你的数据库操作变成事务就可以了
private static Configuration conf;
private static SessionFactory factory;
private static ThreadLocal<Session> tl;
static {
conf = new Configuration().configure();
factory = conf.buildSessionFactory();
tl = new ThreadLocal<Session>();
}
/**
* 获得session
* @return 一个session实例,是线程安全的
*/
public static Session getSession() {
Session session = tl.get();
if(session == null) {
session = factory.openSession();
tl.set(session);
}
return session;
}
/**
* 关闭session
*/
public static void closeSession() {
Session session = tl.get();
if(session != null) {
session.close();
tl.set(null);
}
}
}如果你用的是jdbc直接访问,那么可以通过事务处理机制来同步,因为如果多个线程同时操作一个数据,必然会出问题,事务会回滚,不会提交。
connection.setAutoCommit(false),提交完成后,connection.commit(),再connection.setAutoCommit(true)。至于加synchronized 同步是多余的。