锁定老帖子 主题:介绍一个hibernate的实际项目
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2003-12-06
guty 写道 这个问题确实不好选择。但从实际情况来看,经过多次refactor,我们TEAM中几乎到最后都选择了往PO里添加逻辑。 这样作的主要优点是复用性更好,对Object本身行为的封装也更自然和严谨。因为既然Hibernate开放了session接口,可以直接对数据增删改,如果不把逻辑封装到PO中去,是一件比较危险的事情,不可能要求所有地方都通过BO来操作数据。 可否给个简单的例子看看,这个问题似乎比较有趣:) |
|
返回顶楼 | |
发表时间:2003-12-06
太漂亮了!!
可以看到全部的js源码吗? |
|
返回顶楼 | |
发表时间:2003-12-06
http://coalesys.com/products/panelbarstudio/features/default.asp
to guty: 我更关心你们的表是怎麽建立的,他们的关系是如何组织的,能给出一个数据库表的 UML图吗? |
|
返回顶楼 | |
发表时间:2003-12-07
又一个没有处理的 exception,不知道算不算Bug.附上图
界面很漂亮 不知道你们用没用Bindows,我觉得那些属性页(标签页)用bindows处理会不会简单一些? 不知道有没有人研究过SourceForge上的displaytag工程,这个组件很强大,可以由表格自动生成xml,Excel 等格式并导出,如果把这个标签用在这个工程中,不知效果怎麽样 |
|
返回顶楼 | |
发表时间:2003-12-08
+1 guty.
另外有2个问题: 1. 我想知道一下cache的详细情况,你们用的是hibernate哪种cache?象你们系统在这样大的数据量下,cache所占的内存资源是否很巨大? 2. 页面上使用了很多webfx的javascript,如sortable table, xtree等等,它的license问题你们是怎样解决的? |
|
返回顶楼 | |
发表时间:2003-12-08
shenli 写道 guty 写道 这个问题确实不好选择。但从实际情况来看,经过多次refactor,我们TEAM中几乎到最后都选择了往PO里添加逻辑。 这样作的主要优点是复用性更好,对Object本身行为的封装也更自然和严谨。因为既然Hibernate开放了session接口,可以直接对数据增删改,如果不把逻辑封装到PO中去,是一件比较危险的事情,不可能要求所有地方都通过BO来操作数据。 可否给个简单的例子看看,这个问题似乎比较有趣:) 真是抱歉,这两天忙着别的事情,没有上线,//sorry 下面是Group类的例子,在onSave方法中做校验 package com.brs.magic.party; import java.util.Collections; import java.util.List; import com.brs.magic.MagicException; import com.brs.magic.module.Application; /** * * @author Administrator * * @hibernate.subclass */ public class Group extends Party { public static final String CAT_ADMIN = "a"; public static final String CAT_TEMPLATE = "t"; public static final String CAT_ORG = "o"; protected PartyRole orgRole; protected List members; protected Application application; /** * @return * @hibernate.bag * lazy="true" * cascade="delete" * inverse="true" * @hibernate.collection-key column="groupId" * @hibernate.collection-one-to-many * class="com.brs.magic.party.GroupMember" */ public List getMembers(); { if (members==null); members = Collections.EMPTY_LIST; return members; } /** * @param set */ public void setMembers(List set); { members = set; } /* (non-Javadoc); * @see com.brs.magic.entity.AbstractEntity#onSave(); */ protected void onSave(); { if (getApplication();==null); throw new MagicException("必须指定组所属的应用程序");; if (CAT_ADMIN.equals(category);); { name = "超级用户"; orgRole = null; } else { if (!application.isSingleton();&&getOrgRole();!=null); category = CAT_ORG; else category = CAT_TEMPLATE; } super.onSave();; } /** * @return * @hibernate.many-to-one */ public Application getApplication(); { return application; } /** * @param application */ public void setApplication(Application application); { this.application = application; } /** * @return * @hibernate.many-to-one */ public PartyRole getOrgRole(); { return orgRole; } /** * @param role */ public void setOrgRole(PartyRole role); { orgRole = role; } } |
|
返回顶楼 | |
发表时间:2003-12-08
roberto 写道 太漂亮了!!
可以看到全部的js源码吗? 我到是不想让人看到源码,你有办法吗? |
|
返回顶楼 | |
发表时间:2003-12-08
lyo 写道 http://coalesys.com/products/panelbarstudio/features/default.asp
to guty: 我更关心你们的表是怎麽建立的,他们的关系是如何组织的,能给出一个数据库表的 UML图吗? 表就是用hibernate的SchemaExport创建的呀。 下面是Party模块的类图。 |
|
返回顶楼 | |
发表时间:2003-12-08
lyo 写道 又一个没有处理的 exception,不知道算不算Bug.附上图
界面很漂亮 不知道你们用没用Bindows,我觉得那些属性页(标签页)用bindows处理会不会简单一些? 不知道有没有人研究过SourceForge上的displaytag工程,这个组件很强大,可以由表格自动生成xml,Excel 等格式并导出,如果把这个标签用在这个工程中,不知效果怎麽样 我也是最近才看到这儿的一个帖子,然后才去看的bindows。好是好,就是速度有点慢。要用起来,还得研究研究。 |
|
返回顶楼 | |
发表时间:2003-12-08
Quake Wang 写道 +1 guty.
另外有2个问题: 1. 我想知道一下cache的详细情况,你们用的是hibernate哪种cache?象你们系统在这样大的数据量下,cache所占的内存资源是否很巨大? 2. 页面上使用了很多webfx的javascript,如sortable table, xtree等等,它的license问题你们是怎样解决的? 1. 目前只开了一个服务器,所以用的是nonstrict-read-write cache。在cluster环境下,暂时不敢用hibernate的分布式cache,还得好好测测,暂时方案是no cache。 很多cache都是可以设定内存资源占用的。况且,在我们的系统中,数据量大的是交易数据,这些数据一般是不用cache的。 另外,我在做accounting模块时,发现无论使用哪一种cache或者lock,都不能很好地保证关键数据(帐户余额)序列化读写,我后来自己封装实现了一个lock方法,所以大家如果涉及到这种编程需要特别小心。 2. 确实用了两个webfx的script(其它的都是“剽窃”的别处的)。说实话,用的时候,并没有注意license。刚才看了一下,似乎gpl license是需要向作者申请的。 不过我宁愿让开发人员把这两个script重写一遍,毕竟只有两个文件,就不想搞那么麻烦了。 |
|
返回顶楼 | |