动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.Java技术的新方向.
.谈谈Java语言的垃圾收集器.
.Java从入门到精通之工具篇.
.一个关于JAVA绘制仿真立体饼图的.
.在Hibernate中实现复杂的数据映射.
.jakarta-log4j的使用(java调试工.
.Type 属性.
.java swing 9.27 课程.
.学习笔记之JAVA图形设计卷I AWT—.
.toExponential 方法.
.Java学习过程的一些重点(一).
.在JAVA中实现C++代码的复用.
.领略java.util.Canlendar的优点.
.在 Java 应用程序中访问USB设备.
.AOP如何与J2EE实行高效的无缝结合.
.Java SE 6 新特性: HTTP 增强.
.Eclipse开发工具简介.
.如何让Weblogic资源消耗小一点.
.Java 正则表达式之从入门到精通.
.java的运行流程.

值得关注的持久化技术: hibernate

发表日期:2008-1-5 |



  1.简述:
  学习一项新的技术要花时间的,它会不会把时间在使用它之后补回来是应该关注的问题:我们可以用要害字:"jdo ejb cmp hibernate"在Google上找一找对他们的评论文章,其中只要使用过hibernate的人都对它很推崇(我也是).
  
  我们的对象模型可以被hibernate很好的利用,下图中的Persistent Object是简单的业务实体对象(要被持久化的对象)。通过hibernate被透明的持久化到数据库中。下面的例子会说明一切。
  
. 值得关注的持久化技术: hibernate(图一)

  2.一个简单的例子
  我们开发一个Person类:
  
. 值得关注的持久化技术: hibernate(图二)

  可以想象数据表是下面的样子:
  
  表person
  
. 值得关注的持久化技术: hibernate(图三)

  要通过hibernate实现它要经过以下步骤:
  
  主要是先根据对象模型编写简单的业务实体类(简单的bean规范类,即有get,set方法的类,可以用jac等工具生成),再用XML映射文件描述其映射数据库的方式(很easy),最后就可以通过很少的hibernate api写测试类对其进行持久化操作。
  
  2.1 写Person类(Persistent Object),它和普通的类没甚末不同,但注重它应该复合bean的规范,为每个属性提供get,set方法:
  
  h.Person
  //
  // WARNING: this file has been automatically generated by JAC
  // DO NOT MODIFY unless you know what you are doing
  //
  
  package h;
  
  public class Person {
  
  String name;
  
  /**
  Sets the value of field name.
  @param name value of field name
  */
  
  public void setName(String value) {
    this.name=value;
  }
  
  /**
  Gets the value of field name.
  @return value of field name
  */
  
  public String getName() {
    return name;
  }
  
  String address;
  
  /**
  Sets the value of field address.
  @param address value of field address
  */
  
  public void setAddress(String value) {
    this.address=value;
  }
  
  /**
  Gets the value of field address.
  @return value of field address
  */
  
  public String getAddress() {
    return address;
  }
  
  String id;
  
  /**
  Sets the value of field id.
  @param id value of field id
  */
  
  public void setId(String value) {
    this.id=value;
  }
  
  /**
  Gets the value of field id.
  @return value of field id
  */
  
  public String getId() {
    return id;
  }
  }
  2.2 填写对象-关系映射xml文件,不用担心它的复杂程度,我们可以抄嘛:和所有o-r 映射工具一样都要写这种映射文件。
  
  Person.hbm.xml 建议命名为:"类名"+"hbm.xml" 并且放置在Person类相同包目录下
  <?xml version="1.0" encoding="GB2312"?>
  <!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
  <hibernate-mapping>
  
   <class name="h.Person">
     <!--hibernate为我们生成主键id-->
   <id name = "id" unsaved-value = "null">
   <generator class="uuid.hex"/>
   </id>
  
     <!--默认把类的变量映射为相同名字的表列,当然我们可以修改其映射方式-->
   <property name="name"/>
   <property name="address"/>
   </class>
  </hibernate-mapping>
  
  2.3 TestPerson 我们用hibernate api来进行持久化Person
  
  h.TestPerson 
  package h;
  
  import net.sf.hibernate.Session;
  import net.sf.hibernate.Transaction;
  import net.sf.hibernate.SessionFactory;
  import net.sf.hibernate.cfg.Configuration;
  import net.sf.hibernate.tool.hbm2ddl.SchemaEXPort;
  
  class TestPerson{
  
   private static SessionFactory sessions;
  
  public static void main(String[] args) throws Exception{    
   //配置环境,分析xml映射文件
   Configuration conf= new Configuration()
   .addClass(Person.class);
    
    //生成并输出sql到文件(当前目录)和数据库
    SchemaExport dbExport=new SchemaExport(conf);
    dbExport.setOutputFile("build\\sql.txt");
    dbExport.create(true, true);
  
   sessions = conf.buildSessionFactory();
    //以上都是些固定格式的环境配置
    
    //start......
    Session s = sessions.openSession();
   Transaction t = s.beginTransaction();
     
    //1.用普通使用方式建立对象,填充数据
     Person p1=new Person();
     p1.setName("陈鹏");
     p1.setAddress("西安东郊黄陵");
     
     //2.持久化
     s.save(p1);
   //此时p1已经可以在数据库中找到
  
     t.commit();
     s.close();
  }
  }
  
  2.4 为了运行当然要配置数据库:我以mysql数据库为例子:(只用劳动1次即可)
  
  hibernate.properties 在hibernate源程序的根目录可以找到此文件模板,copy到我们的类的根目录。即:“..\h”
  ## MySQL
  ## 前两行人家都给你填好了,只用填数据库连接和username,passWord
  hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
  hibernate.connection.driver_class org.gjt.mm.mysql.Driver
  hibernate.connection.url jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=GBK
  hibernate.connection.username root
  hibernate.connection.password
  
  2.5 运行TestPerson类,在mysql中观察create好的表person和其中的数据
  
  ok!整个过程主要的是前3步:写bean类(Persistent Object),写o-r映射文件,写存取测试类。
  
  3. 复杂关系例子
  我们换一个稍微复杂的例子来看看:
  
. 值得关注的持久化技术: hibernate(图四)

  可以想象数据表是下面的样子:
  
  表person
  
. 值得关注的持久化技术: hibernate(图五)

  表Company
  
. 值得关注的持久化技术: hibernate(图六)

  3.1 Person(已有),Company类:Persistent Object
  
  h.Company
  package h;
  public class Company {
  String id;
  public void setId(String value) {
    this.id=value;
  }
  public String getId() {
    return id;
  }
  String name;
  public void setName(String value) {
    this.name=value;
  }
  public String getName() {
    return name;
  }
  Java.util.List employees=new java.util.Vector();
  public void setEmployees(java.util.List value) {
    this.employees=value;
  }
  public java.util.List getEmployees() {
    return employees;
  }
  public void addEmployee(h.Person value) {
    employees.add(value);
  }
  public void removeEmployee(h.Person value) {
    employees.remove(value);
  }
  public void clearEmployees() {
    employees.clear();
  }
  }
  
  3.2 填写对象-关系映射xml文件,Person.hbm.xml照旧
  
  Company.hbm.xml 也放到h.Company类相同目录下
  <?xml version="1.0" encoding="GB2312"?>
  <!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
  <hibernate-mapping>
   <class name="h.Company">
     <!--hibernate为我们生成主键id-->
   <id name = "id" unsaved-value = "null">
   <generator class="uuid.hex"/>
   </id>
  
    <property name="name"/>
     <!--1:n关系的映射-->
     <list name="employees" cascade="all">
      <key column="company_id"/>
      <index column="posn"/>
上一篇:我为什么学习Hibernate 人气:541
下一篇:spring关于底层资源的抽象 人气:301
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-10 企业网站智能管理系统(TZIMS) v6
2008-10-10 拓文asp.net网站内容管理系统 v6
2008-10-10 动网论坛PHP版 v2.0++ Build 081
2008-10-10 免费时代CMS v5.0
2008-10-10 wodig第四季中文DIGG社区 v4.1 b
2008-10-10 老Y文章管理系统 v2.2 bulid 081
2008-10-10 魔法盒动感相册 ASP+SQL版 v2.0
2008-10-10 Asoft签到管理系统 v3.0 Pack1
2008-10-10 哥特人音乐网潮流留言本 v1.1
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成