WEB开发网
开发学院软件开发Java 使用 JPA 和 Hibernate 实现组合键 阅读

使用 JPA 和 Hibernate 实现组合键

 2009-11-05 00:00:00 来源:WEB开发网   
核心提示: 清单 2 中的下一个注释是 @IdClass,它定义组合键类引用,使用 JPA 和 Hibernate 实现组合键(3),您可能已经注意到了,该类引用清单 1 中的 BillingAddress 类,用于将一个或两个实体保持到数据库中,清单 4 展示了一段代码摘录,跳过清单 2 中的构造方法,注

清单 2 中的下一个注释是 @IdClass,它定义组合键类引用。您可能已经注意到了,该类引用清单 1 中的 BillingAddress 类。跳过清单 2 中的构造方法,注意 @Id 注释。组合键就是在这里使用嵌套 @AttributeOverrides 注释定义的。这些注释用于定义组合键列:分别是 “STREET” 和 “CITY”。

就在清单 2 的注释之后,您是否看到了来自清单 1 的两行重复的代码?当然,重复的代码是表示街道和城市的两个私有数据成员。这样的重复是创建组合键所必需的。

数据库模式

至此讨论的内容都是技术层面上的。现在我们将以更加具体的方式表述此技巧,我们将生成一个数据库模式。清单 3 展示了来自这个非常简单的 ORM 数据库设计的模式。


清单 3. 数据库模式
drop table PURCHASE_ORDERS if exists; 
 
create table PURCHASE_ORDERS ( 
    street varchar(255) not null, 
    city varchar(255) not null, 
    itemName varchar(255), 
    primary key (street, city) 
); 

可以看到,主键实际上是由 street 和 city 字段组合而成的。在真实的数据库中 — 例如,带有图形用户界面(GUI)工具的数据库中,这将得到怎样的效果?在给出答案之前,我编写了一段简单的客户端代码,用于将一个或两个实体保持到数据库中。

清单 4 展示了一段代码摘录,实例化上文所定义类的对象。


清单 4. ORM 客户端代码摘录
    // Start EntityManagerFactory 
    EntityManagerFactory emf = 
        Persistence.createEntityManagerFactory("helloworld"); 
 
    // First unit of work 
    EntityManager em = emf.createEntityManager(); 
    EntityTransaction tx = em.getTransaction(); 
    tx.begin(); 
 
    PurchaseOrder purchaseOrder = 
     new PurchaseOrder(new BillingAddress("Broad Street", "Boston")); 
    purchaseOrder.setItemName("My new computer"); 
    em.persist(purchaseOrder); 
 
    tx.commit(); 
    em.close(); 

上一页  1 2 3 4  下一页

Tags:使用 JPA Hibernate

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接