我试图理解这个概念,但我在网上搜索的任何解释都太复杂或者假设知识太多。有人可以为我打破这个概念并简单解释一下吗?
答案 0 :(得分:4)
这意味着数据库被抽象远离您的应用程序,“保存”到数据库的概念不会出现在最高级别。
换句话说,您的应用程序会在业务对象上设置数据,而在较低层的下方某处设置数据,这些数据将被保存,但会自动保存。透明。
从分离应用程序和数据库层的角度来看,它本质上是一个抽象的圣杯。
答案 1 :(得分:1)
ORM的真正的美丽是提供的透明持久性,它可以让你编写普通的对象并使它们在很少工作的情况下持久化。要了解透明持久性的工作原理,您必须了解以下概念。
第一个是名为持久性上下文的概念。持久性上下文是ORM用于跟踪对象更改以便在以后保留它们的位置。持久化上下文中的每个Object都将具有以下状态之一:
另一个重要概念称为可持续性的持久性。这表明任何与持久对象相关的瞬态对象也将变得持久。
实现这两个概念使得所谓的透明持久化成为可能。
让我们把它们放在java / jpa代码中:
EntityManager em = //obtain the EntityManger instance EntityTransaction tx = null; try { tx = em.getTransaction(); tx.begin(); Department dept1 = em.find(Department.class, "department1"); dept1.addEmployee(new Employee("José", 10503f)); tx.commit(); } catch (Exception e) { if (tx != null) { tx.rollback(); } throw new RuntimeException(e); } finally { em.close(); }
在线:
Department dept1 = em.find(Department.class, "department1");
我从持久存储中获取部门 department1 并在线:
dept1.addEmployee(new Employee("José", 10503f));
只需追加新员工即可。由于 department1 处于持久状态,可访问性,员工的瞬态实例(José< / em>)将被保留并附加到部门。
从http://www.copypasteisforword.com/notes/hibernate-transparent-persistence中提取。在那里可以找到更多的例子。