JiveJdon Community Forums
在线52人   首页   主题总表   培训咨询   精华   查搜   注册    登陆
首页 » 论坛 » J2EE/JavaEE/JEE/EJB/JSF等技术讨论
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 1 回复 / 1
 发表新帖子   回复该主题贴
kevinleepk

悄悄话
发表文章: 2
注册时间: 2005年09月07日 23:36
读了ibatis的jpetstore源程序,有个关于synchronized的问题请教一下 2005年10月29日 14:44 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表
在看jpetstore的源程序时,发现里面有个生成序列号dao实现类,通过名称找到当前数据库中该类别的序列号,将取出的序列号加1并更新到数据库中,同时返回加1前的序列号,这个方法名前有个synchronized关键字。请问如果在真实环境下采用这种方法会不会有问题?是否需要将该方法定义为static方法?或对该类采用singleton的模式?


代码如下

/**
* User: Clinton Begin
* Date: Jul 13, 2003
* Time: 7:21:30 PM
*/
package com.ibatis.jpetstore.persistence.sqlmapdao;

import com.ibatis.dao.client.DaoException;
import com.ibatis.dao.client.DaoManager;
import com.ibatis.jpetstore.domain.Sequence;
import com.ibatis.jpetstore.persistence.iface.SequenceDao;

public class SequenceSqlMapDao extends BaseSqlMapDao implements SequenceDao {

public SequenceSqlMapDao(DaoManager daoManager) {
super(daoManager);
}

/**
* This is a generic sequence ID generator that is based on a database
* table called 'SEQUENCE', which contains two columns (NAME, NEXTID).
* <p/>
* This approach should work with any database.
*
* @param name The name of the sequence.
* @return The Next ID
* @
*/
public synchronized int getNextId(String name) {
Sequence sequence = new Sequence(name, -1);

sequence = (Sequence) queryForObject("getSequence", sequence);
if (sequence == null) {
throw new DaoException("Error: A null sequence was returned from the database (could not get next " + name + " sequence).");
}
Object parameterObject = new Sequence(name, sequence.getNextId() + 1);
update("updateSequence", parameterObject);

return sequence.getNextId();
}

}
banq

悄悄话
发表文章: 9290
注册时间: 2002年08月03日 17:08
Re: 读了ibatis的jpetstore源程序,有个关于synchronized的问题请教一下 2005年11月01日 09:42 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
序列号需要严格事务处理以及业务逻辑运算,所以jpetstore的序列号只是适合访问量不大的情况。
这个主题有 1 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com
anti spam