您的位置:首页 > 其它

把Shark的用户管理模块改为Hibernate实现

2005-12-19 11:02 316 查看
Shark的用户管理模块是独立于其它模块的,为了方便与其它系统整合,可以把该模块改为Hibernate实现。
Shark中附带的Hibernate实现代码是针对Shark 1.0版本的,在当前的版本(1.1-2)中,数据库的结构和Shark的API都发生了变化,所以要对Hibernate代码和数据库做一些调整。另外,Shark中附带的Hibernate实现代码是Hibernate 2.0的,如果需要,做一些很小的调整就可以升级到Hibernate 3.0。Hibernate代码的调整完全可以依赖Shark的API说明来做,由于数据库主键都发生了变化,所有查询都需要更改。但是由于Shark的查询方式非常单一,例如对用户表只有一种查询方式,对group表也只有一种查询方式,改动可以很快完成。Shark用户模块的数据库只有4个表,分别是GroupTable、GroupGroupTable、UserGroupTable、UserTable。Shark数据库的主要修改在于主键发生了变化。由于DODS的需要,每个表都有OID和Version两个列,其中OID是主键。因此,主要问题就集中在这两个字段如何赋值。如果采用的是其它系统的用户表就没有这个问题了。以下三个文件是Hibernate的配置文件:hibernate.user.cfg.xmlHibernateUser.hbm.xmlHibernateGroup.hbm.xml放置在{classes}/hbm/UserGroup/目录下,org.enhydra.shark.usertransaction.ThreadLocalSession文件中需要指出配置文件的路径: static { try { sessionFactory = new Configuration().configure( "/hbm/UserGroup/hibernate.user.cfg.xml").buildSessionFactory(); } catch (HibernateException ex) { throw new RootError("Exception building SessionFactory: " + ex.getMessage(), ex); } }
shark.conf需要做如下调整:首先,更换AuthenticationManager接口的实现类,选用HibernateAuthenticationManager#AuthenticationManagerClassName=org.enhydra.shark.authentication.LDAPAuthenticationManager#AuthenticationManagerClassName=org.enhydra.shark.authentication.DODSAuthenticationManagerAuthenticationManagerClassName=org.enhydra.shark.authentication.HibernateAuthenticationManager其次,更换UserGroupManager接口的实现类,选用HibernateUserGroupManager#UserGroupManagerClassName=org.enhydra.shark.usergroup.LDAPUserGroupManager#UserGroupManagerClassName=org.enhydra.shark.usergroup.DODSUserGroupManagerUserGroupManagerClassName=org.enhydra.shark.usergroup.HibernateUserGroupManager第三,更换UserTransactionManager接口的实现类,选择HibernateUserTransactionFactory#UserTransactionManagerClassName=org.enhydra.shark.usertransaction.DODSUserTransactionFactoryUserTransactionManagerClassName=org.enhydra.shark.usertransaction.HibernateUserTransactionFactory总之,用户管理模块改为Hibrnate实现的工作量不大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: