在向大家详细介绍Hibernate之前,首先让大家了解下Hibernate示例,以后全面介绍Hibernate。
Hibernate示例
创建一个订单。在该Hibernate示例中,我们创建并持久化一个订单。反复运行这个示例,查看产品数量在每次成功创建订单后如何变化。
- / ...
- Configuration cfg = new Configuration().addClass(Product.class).
addClass(Order.class).addClass(OrderItem.class);- // ...
- Order order = new Order();
- order.addProduct(milk, 3);
- order.addProduct(coffee, 5);
- // ...
- sess = sf.openSession();
- Transaction t = sess.beginTransaction();
- sess.save(order);
- t.commit();
- sess.close();
- System.out.println(order);
- // ...
按照价格范围查找订单。在该示例中,我们将展示如何使用一个带有两个参数的查询。Hibernate正确地加载具有适当订单项和产品的订单。
- // ...
- String query = "select o from o "+ "in class test.hibernate.Order "+
"where o.priceTotal > :priceTotalLower "+ "and o.priceTotal
< :priceTotalUpper";- // ...
- Query q = sess.createQuery(query);
- q.setDouble("priceTotalLower",Double.parseDouble(args[0]));
- q.setDouble("priceTotalUpper",Double.parseDouble(args[1]));
- List list = q.list();
- // ...
- sess.close();
- // ...
删除一定价格范围内的订单。这是一个重要的Hibernate示例。这里我们会看到Hibernate是一个多么智能的工具。正如前面所提到的,当删除一个订单时,其订单项也需要被删除,但不能改变产品。在运行该示例后,检查数据库,确认产品没有变化。
- // ...
- String query = "select o from o "+ "in class test.hibernate.Order "+
"where o.priceTotal > :priceTotalLower "+ "and o.priceTotal
< :priceTotalUpper";- Transaction tx = sess.beginTransaction();
- sess.delete(query,new Object[]{new Double(args[0]),new Double(args[1])},
new Type[]{Hibernate.DOUBLE,Hibernate.DOUBLE});- tx.commit();
- sess.close();
【编辑推荐】