----------------------------------------------------------------
/**
* 版权: 石太祥 [ E.Alpha ] 所有 ;
*
* email: ealpha(AT)msn(DOT)com ;
* msn: ealpha(AT)msn(DOT)com ;
* QQ : 9690501
*
* 所有转载请注明本信息!
*/
----------------------------------------------------------------
1. 用例
培训 使用一个简单用例说明JDO各个功能,用例包括两个表单,分别为:EMAP_User、EMAP_Post。这两个表单分别为用户表以及论坛发帖表。
EMAP_User表单明细如下:
列名 | 数据类型(精度范围) | 描述 |
UserId | Varchar2(38) | 用户ID。主键。 |
LoginName | Varchar2(255) | 登录名称。 |
Password | Varchar2(255) | 密码。 |
Nick | Varchar2(255) | 用户昵称。 |
EMAP_Post表单明细如下:
列名 | 数据类型(精度范围) | 描述 |
PostId | Number(38) | 帖子ID。主键。 |
Title | Varchar2(255) | 用户姓名。 |
Content | Varchar2(4000) | 用户年龄。 |
这两个表单对应的两个类分别为:User、Post。两个类关系如下:
2. Hibernate
2.1. 快速入门
产品主页:http://www.hibernate.org/。可以从该连接得到最新的软件包以及开发资料。
最新版本:2.1.2(推荐版本)
支持数据源包括:HypersonicSQL、PostgreSQL、DB2、MySQL、Oracle、Sybase、Mckoi SQL、SAP DB、MS SQL Server、JSQL Driver、JTURBO Driver、WebLogic Driver、纯Java驱动程序。
2.2. 使用指南
1、 准备工作:下载Hibernate2.1.2版本。并配置Classpath,是工程文件可以访问。
2、 将Hibernate中的配置文件hibernate.properties复制到应用程序的Default包里。修改此配置文件,选择相应的数据源配置。在本报告中,选择MySQL数据库配置。
3、 编写Java类,类包含每个变量的getter和setter函数以及辅助函数equals等。
4、 编写Java类的映射配置文件:类名.hbm.xml。映射的规则全在其中定义。
5、 配置文件介绍:
为根节点。
根节点下一个节点是 ,最简单的情况下, 节点必须有name和table两个属性,前者描述对象所属的类,后者描述映射到的数据表:
…
class>
对象的属性分为主键类和非主键类。主键类属性使用 标示,并且需要填写 ,即生成主键的方式,共有四种:Hi/Low、UUID、Identity、Assigned。非主键类属性使用 等标示。
6、 客户端程序典型应用:
Configuration cfg = new Configuration().addClass(User.class).addClass(Post.class);
SessionFactory sessions = cfg.buildSessionFactory();
new SchemaExport(cfg).create(true, true);
Session session = sessions.openSession();
User user = new User("Gigix");
user.setPassword("password");
Post post = new Post();
post.setTitle("Test");
post.setContent("Only for Test");
user.getPosts().add(post);
session.save(user);
session.flush();
session.close();
session = sessions.openSession();
Query q = session.createQuery("from Post as post where post.title = 'test'");
post = (Post) q.list().get(0);
System.out.println(post.getOwner().getPassword());
post.getOwner().setPassword("xiongjie@csdn.net");
session.update(post);
System.out.println(post.getOwner().getPassword());
session.flush();
session.close();
7、 对象与对象之间的关系包括:一对一、一对多、多对一、多对多。
一对多情况:
lazy="true"
inverse="false"
cascade="all"
sort="unsorted"
order-by="POST_ID">
多对一情况:
name="owner"
class="com.mdao.test.hibernate.User"
cascade="none"
outer-join="auto"
update="true"
insert="true"
column="OWNER_ID" />
2.3. 简单用例
参考源码,略。
3. 开发资源
http://www.hibernate.org.cn:8000/
http://www.jdocentral.com/