全面引用Hibernate示例

开发 后端
这里介绍在该Hibernate示例中,我们创建并持久化一个订单。反复运行这个示例,查看产品数量在每次成功创建订单后如何变化。

在向大家详细介绍Hibernate之前,首先让大家了解下Hibernate示例,以后全面介绍Hibernate。

Hibernate示例

创建一个订单。在该Hibernate示例中,我们创建并持久化一个订单。反复运行这个示例,查看产品数量在每次成功创建订单后如何变化。

  1. / ...  
  2. Configuration cfg = new Configuration().addClass(Product.class).
    addClass(Order.class).addClass(OrderItem.class);  
  3.  
  4. // ...  
  5.  
  6. Order order = new Order();  
  7. order.addProduct(milk, 3);  
  8. order.addProduct(coffee, 5);  
  9.  
  10. // ...  
  11. sess = sf.openSession();  
  12. Transaction t = sess.beginTransaction();  
  13. sess.save(order);  
  14. t.commit();  
  15. sess.close();  
  16.  
  17. System.out.println(order);  
  18. // ... 

按照价格范围查找订单。在该示例中,我们将展示如何使用一个带有两个参数的查询。Hibernate正确地加载具有适当订单项和产品的订单。

  1. // ...  
  2. String query = "select o from o "+ "in class test.hibernate.Order "+ 
    "where o.priceTotal 
    > :priceTotalLower "+ "and o.priceTotal 
    < :priceTotalUpper";  
  3.  
  4. // ...                 
  5. Query q = sess.createQuery(query);  
  6. q.setDouble("priceTotalLower",Double.parseDouble(args[0]));  
  7. q.setDouble("priceTotalUpper",Double.parseDouble(args[1]));  
  8.  
  9. List list = q.list();  
  10. // ...  
  11. sess.close();  
  12. // ... 

删除一定价格范围内的订单。这是一个重要的Hibernate示例。这里我们会看到Hibernate是一个多么智能的工具。正如前面所提到的,当删除一个订单时,其订单项也需要被删除,但不能改变产品。在运行该示例后,检查数据库,确认产品没有变化。

  1. // ...  
  2. String query = "select o from o "+ "in class test.hibernate.Order "+ 
    "where o.priceTotal 
    > :priceTotalLower "+ "and o.priceTotal 
    < :priceTotalUpper";  
  3.  
  4. Transaction tx = sess.beginTransaction();  
  5. sess.delete(query,new Object[]{new Double(args[0]),new Double(args[1])},
    new Type[]{Hibernate.DOUBLE,Hibernate.DOUBLE});        
  6. tx.commit();  
  7. sess.close(); 

【编辑推荐】

  1. Hibernate对数据索引进行缓存
  2. 剖析Hibernate主键生成几种常用方式
  3. 浅析Hibernate实现实体对象延迟加载
  4. Hibernate集合类型的延迟加载特性
  5. 概括Hibernate属性延迟加载
责任编辑:佚名 来源: 51CTO.com
相关推荐

2009-09-21 16:56:14

Hibernateibatis

2009-09-24 10:50:31

Hibernate主键

2009-09-28 17:27:27

Hibernate A

2009-09-28 13:49:44

Hibernate Q

2009-09-23 15:50:21

Hibernate u

2009-09-25 16:27:33

Hibernate S

2009-09-29 10:12:03

Hibernate A

2009-09-28 10:24:58

Hibernate基础

2009-09-25 09:46:03

Hibernate s

2009-09-23 17:41:05

Hibernate事务

2009-09-22 15:22:08

Hibernate性能

2009-09-22 11:24:07

Hibernate查询

2009-09-21 17:46:34

Hibernate持久

2009-09-27 17:46:22

Hibernate监听

2009-09-21 16:40:42

Hibernate可行

2009-09-25 17:19:28

Hibernate持久

2023-10-23 10:48:30

Golang数组

2009-09-24 11:04:56

Hibernate二级

2023-10-26 12:05:14

Golang开发

2010-04-14 16:37:12

Cisco路由器
点赞
收藏

51CTO技术栈公众号