hibernate版的jivejdon

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

up

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


换一个MM头像:
[该贴被oojdon于2008-09-17 14:12修改过]


这是编辑板


快速回复按钮,点击之后慢慢延伸出一个textarea




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


JBoss下面吧

yes

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


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

在QQ上我问了你一个问题。有空看一下

>>好 很好,现在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 异常


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);
}
}

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


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

>目前程序有很多bug,等我干掉它们以后再把程序共享出来,
不用,我是BUG修正专家,专门把别人重构系统吃饭的,有的系统没有说明书,我也能搞定。

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

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

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

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

遗留系统的代码可以把它OO,但是数据库呢?怎么做到和OO衔接?
现在我手上有一个全新的系统,但是要导入巨量的纸质数据,我敢先让hibernate自动建表吗?