hibernate版的jivejdon

08-09-17 oojdon
Jdon改版了,我也来show一下我的hibernate学习成果,用Jpa注解+hibernate重构的jivejdon

pub
2008-09-17 14:02
up

oojdon
2008-09-17 14:07
管理员进来直接到达某个帖子进行删除,用AOP拦截某些别有用心者利用url路径做自己不该做的事!


oojdon
2008-09-17 14:12
换一个MM头像:

[该贴被oojdon于2008-09-17 14:12修改过]


oojdon
2008-09-17 14:16
这是编辑板


oojdon
2008-09-17 14:29
快速回复按钮,点击之后慢慢延伸出一个textarea



oojdon
2008-09-17 14:42
附件

[该贴被oojdon于2008-09-17 14:47修改过]


pub
2008-09-17 15:16
JBoss下面吧

oojdon
2008-09-17 15:29
yes

banq
2008-09-17 17:21
好 很好,现在JiveJdon3缺作者头像功能,你能否把这个组件共享到JiveJdon3中,如果可以,首先代表大家谢谢你。

[该贴被banq于2008-09-18 10:03修改过]

pub
2008-09-17 17:22
在QQ上我问了你一个问题。有空看一下

oojdon
2008-09-18 11:11
>>好 很好,现在JiveJdon3缺作者头像功能,你能否把这个组件共享到JiveJdon3中,如果可以,首先代表大家谢谢你。

当然可以,但是由于hibernate必须对实体加Id所以此版本的模型和jivejond3是有区别的,在jivejdon中用户头像是一个Property多对一AccountProfile,但我初次学hibernate被一对多的级联弄晕了,干脆就把用户的的所有Property合并到了AccountProfile对象中。

目前程序有很多bug,等我干掉它们以后再把程序共享出来,由于马上要忙一个新项目可能进度不是很快,但尽量吧!我最怕的就是管理缓存,几次尝试都失败了,缓存就是不能更新啊,是不是在hibernate二级缓存外再加缓存完全是自找麻烦?这是相关几个头疼问题,改抉择哪一个?在延迟加载的时候如果jdon缓存存放的只是一个代理,下次请求直接从缓存读到了代理对象,这样遍历代理对象的时候会有sessin已关闭异常发生吗?

1,关闭jdon的缓存,只配置二级缓存

2,打开jdon缓存encache,让hibernate和jdon共享一个缓存

3,持久层放弃懒加载关闭hibernate缓存,在高层用jdon缓存存放完整模型对象

4,打开懒加载,打开二级缓存,打开jdon缓存

btw:用jdon+hibernate我一次也没遇到过传说中的LazyInitializationException 异常

oojdon
2008-09-19 16:35
public static void closeSession() throws HibernateException {
		Transaction tr = (Transaction)getTransaction();
		try {
			if (tr != null && !tr.wasCommitted() && !tr.wasRolledBack()) {
				tr.commit();
			}
		} catch (Exception e) {
		}finally{
			setTransaction(null);
		    getSession().close();
			setSession(null);
		}
}
<p>

这是jdon最后sessin关闭过滤器将要调用的代码,我的疑惑是为什么没有事务回滚?还有整个http请求数据库事务都开启意味着一直持有数据库锁,这样妥当吗?

[该贴被oojdon于2008-09-19 16:36修改过]

banq
2008-09-20 22:28
>目前程序有很多bug,等我干掉它们以后再把程序共享出来,

不用,我是BUG修正专家,专门把别人重构系统吃饭的,有的系统没有说明书,我也能搞定。

所以,你只要把这部分头像上传管理的jsp代码和模型以及配置发到我信箱就可以,我会嵌入JJ,不过署名版权是你的。

关于缓存,选择第四种,lazy打开 jdon缓存打开,全部打开,可以看jdon on Rails代码。

关于锁的长短,依靠设计来解决:

根据DDD,当一个聚合根对象包括子对象正在操作时,为保证一致性,应该将整个表锁住,但是为防止锁粒度太大,导致其他用户同时操作该表被拒交,从而影响性能,就将经常修改的部分单独出来,变成一个子对象,这时锁这个子对象的表即可,也就是JJ中状态对象构造来源,因为改变Forum的状态不会影响Form的其他部分。

oojdon
2008-09-26 10:39
>>不用,我是BUG修正专家,专门把别人重构系统吃饭的,有的系统没有说明书,我也能搞定。

遗留系统的代码可以把它OO,但是数据库呢?怎么做到和OO衔接?

现在我手上有一个全新的系统,但是要导入巨量的纸质数据,我敢先让hibernate自动建表吗?

猜你喜欢
2Go 1 2 下一页