[JAVA]Hibernate3.6应用实例详解
来源:互联网 发布:腾讯何时优化吃鸡 编辑:程序博客网 时间:2024/05/01 02:54
Hibernate是一个非常著名的的对象--关系映射工具,本文使用的是Hibernate3.6的版本。本文通过建立一个工程,来引导大家学习hibernate,对hibernate有个认识。有些代码、概念不清楚没关系,后文会慢慢的介绍。文中也有大量的注释,附件会上传本文所有的源码。
首先建立一个Web Project,然后在WEB-INF/lib下添加相关的jar包。项目结构如下图1所示。jar包介绍如下:
图1
hibernate-distribution-3.6.0.Final-dist\hibernate-distribution-3.6.0.Final\lib\required 目录下相应的jar包:
antlr-2.7.6.jar:HQL-->SQL的转换
commons-collections-3.1.jar:Apache的集合类工具
dom4j.jar:解析XML文档
hibernate3.jar:hibernate核心API实现
javassist-3.12.0.GA.jar:动态Java代码生成工具
jta-1.1.jar:标准的Java事务处理接口
slf4j-api-1.6.1.jar:日志管理API
slf4j-nop-1.6.1.jar:日志管理。
一.持久化类如下:
Customer.java
package com.yaxing.entity; import java.util.HashSet; import java.util.Set; /** * 顾客类 * */ public class Customer { private Long id; private String name; private Set<Order> orders = new HashSet<Order>(); public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set<Order> getOrders() { return orders; } public void setOrders(Set<Order> orders) { this.orders = orders; } }
Order.java
package com.yaxing.entity; /** * 订单类 * */ public class Order { private Long id; private Customer customer; private String orderNumber; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Customer getCustomer() { return customer; } public void setCustomer(Customer customer) { this.customer = customer; } public String getOrderNumber() { return orderNumber; } public void setOrderNumber(String orderNumber) { this.orderNumber = orderNumber; } }
说明如下:这是一种典型的一对多的关联关系。即一个客户会有多个订单,而一个订单必然会属于一个客户,因此对于一个订单来说,如果其客户不存在,则此订单是没有任何意义的。这里设置的是双向的关联关系。因为可能业务中会存在大量的这样的需求:
查询客户的所有订单
根据所给的订单,查询订单所属的客户
类与类之间建立关联关系,可以很方便的从一个对象导航到另外一个对象,建立关系如下:
/** * 订单类 * */ public class Order { private Long id; private Customer customer; //... }
http://jinhuabailing.com sducc1122
这样就从order对象导航到了customer对象,
从order对象到customer对象的导航如下:即给定了order对象,获得了与他所关联的costomer对象.
Customer customer = order.getCustomer();
那么对于给定的costomer对象,如何从customer对象导航到order对象呢?因为customer对象里面包含一组order,即一个客户会存在多个订单。
因此对于给定的客户,要查询所有的订单,代码如下:
返回的是一个Set集合。
customer.getOrders();//返回一个set集合,用迭代器访问。
关于集合类的操作,也不是本文的内容,读者可以参考其他文章。不清楚的,可以本文后面留言。
- [JAVA]Hibernate3.6应用实例详解
- struts2.3.5整合hibernate3.2.0 实例详解
- Struts2+spring2+hibernate3实例源码-java源码
- Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解
- PHP5应用实例详解
- log4j-使用详解与Java的实例应用
- Log4j-使用详解与Java的实例应用
- java代码块知识详解及应用实例
- log4j-使用详解与Java的实例应用
- hibernate3.0实例
- Spring2+Hibernate3+Struts1实例
- Spring3+hibernate3小实例
- 应用Hibernate3的DetachedCriteria实现分页查询 (来自JAVA视线)
- java S2SH项目框架Struts2.3+Spring3.1+Hibernate3.6框架搭建整合以及实例demo代码分享
- hibernate3应用部署weblogic12
- Maven-Hibernate3插件应用
- java JSplitPane应用实例
- Java反射应用实例
- 关于安卓内存分配问题
- 使用 hibernate 存取大对象数据类型(clob和blob)
- java socket通信
- uva 122 Trees on the level
- 【写博分享是矢志不渝的使命】关于2013年度IT博客大赛
- [JAVA]Hibernate3.6应用实例详解
- 数据结构应用标准模版库STL——栈(分解栈元素)
- 关于android:configChanges的属性
- java学习之路----项目经验----关于TOMCAT中文乱码问题的总结
- SOM自组织神经网络
- Exception in thread "main" java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.解决方法
- 批处理关机命令
- mysql 实现远程访问,phpmyadmin实现远程连接mysql
- [TED] 在用户空间Debug kernel