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。两个类关系如下: 
userId:String 
loginName:String 
password:String 
nick:String 
posts:Set   |   
postId:Long 
title:String 
content:String 
owner:User   |    
  
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、   配置文件介绍: 
<hibernate-mapping>为根节点。 
根节点下一个节点是<class>,最简单的情况下,<class>节点必须有name和table两个属性,前者描述对象所属的类,后者描述映射到的数据表: 
<class name="com.mdao.test.hibernate.User" table="USER" 
… 
class> 
对象的属性分为主键类和非主键类。主键类属性使用<id>标示,并且需要填写<generator>,即生成主键的方式,共有四种:Hi/Low、UUID、Identity、Assigned。非主键类属性使用<property>等标示。 
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("[email protected]"); 
session.update(post); 
System.out.println(post.getOwner().getPassword()); 
session.flush(); 
session.close(); 
7、   对象与对象之间的关系包括:一对一、一对多、多对一、多对多。 
一对多情况: 
<set name="posts" 
    lazy="true" 
    inverse="false" 
    cascade="all" 
    sort="unsorted" 
    order-by="POST_ID"> 
              <key column="OWNER_ID"/> 
              <one-to-many class="com.mdao.test.hibernate.Post"/> 
</set> 
多对一情况: 
<many-to-one 
    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://forum.javaeye.com/ http://www.jdocentral.com/ 
 
  |