处理不同版本的Hibernate库

时间:2011-10-11 17:03:04

标签: hibernate spring maven password-encryption jasypt

我有一个使用名为EXAMPLE的数据库的现有应用程序,它使用了一种旧版本的hibernate。

用户密码存储为 org.jasypt.hibernate.type.EncryptedStringType

<typedef name="encryptedString" class="org.jasypt.hibernate.type.EncryptedStringType">
    <param name="encryptorRegisteredName">jasyptHibernateEncryptor</param>
</typedef>

    <property name="password" type="encryptedString">
        <column name="pwd" length="254" not-null="true" />
    </property>

我不知道它是否总是这样,但基本上,当查询用户时,它会自动解密密码,因此它是明文。

现在,在同一个数据库上,有一个新的Web应用程序正在运行(称之为webapp2)。这个密码以不可加密的方式加密密码。

我被要求做的是将旧用户迁移到“新方式”,我所做的是创建一个包含3个模块的maven项目:

  • module1 (又名oldie)应该只能查询数据库中的 旧的方式(这样对于用户表上的每个查询我都可以拥有 用户密码明文)
  • module2 (又名newie)应该以新的方式查询数据库。
  • module3 应该有一个虚拟类(现在它是一个junit thingy) 它使用来自module1的UserService和来自module2的UserService 分别为读取用户密码(明文)并将其设置回来 新方式。

问题: 我面临的问题是module3 必须处理不同版本的hibernate库以及其他什么不是。

在我的 module3 的配置上(它们都是spring应用程序)我从module1和module2自动装配服务和daos,造成很多混乱,最终陷入困境。

似乎正在发生的事情是,存在各种依赖关系,这使得sessionFactories或daos(现在)的实例化成为不可能。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我不会尝试同时使用两种版本的Hibernate。你可以

  • 在一个小的实用程序类中提取加密/解密部分,并使用JDBC以旧方式解密并使用新方法加密。
  • 或者只是运行第一个模块以第一个模块以明文形式提取所有密码并将它们放入文件或专用数据库表中,然后使用第二个模块运行第二个传递以提取明文密码和将它们存储在实体中以使用新方法加密它们。