【问题标题】:Migrating from hibernate to another ORM tool从休眠迁移到另一个 ORM 工具
【发布时间】:2015-03-12 14:19:05
【问题描述】:

假设我已经为我的类使用了 javax.persistance 注释,并且如果我使用了 hibernate 来持久化这些类的对象,我需要做什么样的更改才能迁移到另一个 ORM 工具?例如,应如何更改以下代码以采用新的 ORM 工具?我知道我需要更改导入语句,但是其余代码呢?

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

public class Driver {

    private static StandardServiceRegistry serviceRegistry;
    private static SessionFactory sessionFactory;

    public static void main(String[] args) {

        MyClass obj = new MyClass();
        obj.setUserID(3);
        obj.setName("shsdassaadfna");

        Configuration configuration = new Configuration().configure();
        serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
        sessionFactory = configuration.configure().buildSessionFactory(serviceRegistry);

        Session session = sessionFactory.openSession();
        session.beginTransaction();
        session.save(obj);
        session.getTransaction().commit();
        session.close();
    }

}

【问题讨论】:

    标签: java hibernate orm


    【解决方案1】:

    虽然您确实使用了javax.persistence 注释,但您的其余代码是特定于 Hibernate 的,因此 ORM 更改将需要对代码进行重大重写。

    为了让您的代码与 JPA 供应商无关,您应该只使用 JPA 接口、entity manager 而不是 Hibernate 会话等。即便如此,只有代码的完整测试覆盖才能为您提供高水平的保证:一切都会按预期继续工作。

    【讨论】:

    • 那么使用 JPA 接口是最佳实践吗?
    • 是的,特别是如果在此过程中可能会更改 ORM(我必须说,我自己在任何项目中都没有看到过)。
    • 如果这是最佳实践,如果这有助于 ORM 工具更改,为什么人们会像我一样编写休眠特定代码? (我只是跟着一个教程)
    • Hibernate(与任何其他 ORM/JPA 实现一样)开发了一些 JPA 规范未涵盖的功能。为了使用它们,您需要使用 Hibernate 特定的代码。并不是说您发布的代码中有类似的东西,而是基本的东西。此外,正如我所说,在实时项目中更改 ORM 并不是真正常见的做法,所以很多人都在考虑他们将在项目开始时使用的 ORM,而且他们没有理由不使用供应商特定的好东西。
    猜你喜欢
    • 1970-01-01
    • 2015-12-28
    • 2012-12-23
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    相关资源
    最近更新 更多