使用JPA和Hibernate实现组合键 - 编程入门网
。跳过清单 2 中的构造方法,注意 @Id 注释。组合键就是在这里使用嵌套 @AttributeOverrides 注释定义的。这些注释用于定义组合键列:分别是 “STREET” 和 “CITY”。
就在清单 2 的注释之后,您是否看到了来自清单 1 的两行重复的代码?当然,重复的代码是表示街道和城市的两个私有数据成员。这样的重复是创建组合键所必需的。 数据库模式 至此讨论的内容都是技术层面上的。现在我们将以更加具体的方式表述此技巧,我们将生成一个数据库模式。清单 3 展示了来自这个非常简单的 ORM 数据库设计的模式。 清单 3. 数据库模式
使用JPA和Hibernate实现组合键(3)时间:2011-01-28 IBM Stephen B. Morris可以看到,主键实际上是由 street 和 city 字段组合而成的。在真实的数据库中 — 例如,带有图形用户界面(GUI)工具的数据库中,这将得到怎样的效果?在给出答案之前,我编写了一段简单的客户端代码,用于将一个或两个实体保持到数据库中。 清单 4 展示了一段代码摘录,实例化上文所定义类的对象。 清单 4. ORM 客户端代码摘录
清单 4 中的代码展示了从 PurchaseOrder 对象的实例化和设置一直到此对象在数据库中的持久化这个完整的过程。这实实在在地体现了 ORM 的魔力。让我们来看看发生了什么。 首先创建一个 EntityManagerFactory 的实例,随后使用此实例创建 EntityManager 的一个名为 em 的实例。后者随后用于将 PurchaseOrder 对象实例写入数据库。保持到数据库中的实际过程是在事务中完成的。 事务就是一组原子操作,可能全部成功完成,或在出现错误时回滚。如清单 4 所示,EntityManager 对象用于创建 EntityTransaction 的一个名为 tx 的实例。后面这个对象将工作单元打包到事务中。 请注意对 persist() 和 commit() 的调用。必须牢记,除非同时出现这两个调用,否则不能更改数据库。这是 Java 持久 API(JPA)的简单模式。 为了完成 ORM 之旅,图 1 展示了运行清单 4 中的代码之后数据库的状态。代码是使用称为 HSQLDB 的内存数据库测试的,这种产品包含一个简单的 GUI 工具。图 1 显示了 HSQLDB 数据库的状态。可以看到,我对 PURCHASE_ORDERS 表运行了 SQL 查询。该表是通过模式创建的,模式本身是使用本文前面给出的清单创建的。 图 1. 填充后的数据库 在图 1 中,可以看到清单 4 中的这行代码产生的效果:purchaseOrder.setItemName("My new computer")。对 setter 代码的调用使用 String 数据 “My new computer” 填充了数据库行中的相关列。就工作流而言,可认为整个程序都是在创建新计算机的购买订单时运行的,随后就是发票邮寄过程。工作流中的所有步骤都隐式地存储在数据库中。 结束语 清单 1 和清单 2 中定义的组合键允许您将多个列绑定在一起。列的组合能 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |