论坛首页 Java企业应用论坛

介绍一个hibernate的实际项目

浏览 60906 次
该帖已经被评为精华帖
作者 正文
   发表时间:2003-12-06  
guty 写道

这个问题确实不好选择。但从实际情况来看,经过多次refactor,我们TEAM中几乎到最后都选择了往PO里添加逻辑。
这样作的主要优点是复用性更好,对Object本身行为的封装也更自然和严谨。因为既然Hibernate开放了session接口,可以直接对数据增删改,如果不把逻辑封装到PO中去,是一件比较危险的事情,不可能要求所有地方都通过BO来操作数据。

可否给个简单的例子看看,这个问题似乎比较有趣:)
1 请登录后投票
   发表时间:2003-12-06  
太漂亮了!!
可以看到全部的js源码吗?
0 请登录后投票
   发表时间:2003-12-06  
http://coalesys.com/products/panelbarstudio/features/default.asp

to guty:

    我更关心你们的表是怎麽建立的,他们的关系是如何组织的,能给出一个数据库表的 UML图吗?
0 请登录后投票
   发表时间:2003-12-07  
又一个没有处理的 exception,不知道算不算Bug.附上图

界面很漂亮
不知道你们用没用Bindows,我觉得那些属性页(标签页)用bindows处理会不会简单一些?

不知道有没有人研究过SourceForge上的displaytag工程,这个组件很强大,可以由表格自动生成xml,Excel 等格式并导出,如果把这个标签用在这个工程中,不知效果怎麽样
0 请登录后投票
   发表时间:2003-12-08  
+1 guty.

另外有2个问题:
1. 我想知道一下cache的详细情况,你们用的是hibernate哪种cache?象你们系统在这样大的数据量下,cache所占的内存资源是否很巨大?

2. 页面上使用了很多webfx的javascript,如sortable table, xtree等等,它的license问题你们是怎样解决的?
0 请登录后投票
   发表时间: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;
	}

}

0 请登录后投票
   发表时间:2003-12-08  
roberto 写道
太漂亮了!!
可以看到全部的js源码吗?


我到是不想让人看到源码,你有办法吗?
0 请登录后投票
   发表时间:2003-12-08  
lyo 写道
http://coalesys.com/products/panelbarstudio/features/default.asp

to guty:

    我更关心你们的表是怎麽建立的,他们的关系是如何组织的,能给出一个数据库表的 UML图吗?


表就是用hibernate的SchemaExport创建的呀。
下面是Party模块的类图。

0 请登录后投票
   发表时间:2003-12-08  
lyo 写道
又一个没有处理的 exception,不知道算不算Bug.附上图

界面很漂亮
不知道你们用没用Bindows,我觉得那些属性页(标签页)用bindows处理会不会简单一些?

不知道有没有人研究过SourceForge上的displaytag工程,这个组件很强大,可以由表格自动生成xml,Excel 等格式并导出,如果把这个标签用在这个工程中,不知效果怎麽样


我也是最近才看到这儿的一个帖子,然后才去看的bindows。好是好,就是速度有点慢。要用起来,还得研究研究。
0 请登录后投票
   发表时间: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重写一遍,毕竟只有两个文件,就不想搞那么麻烦了。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics