`
守望者
  • 浏览: 54344 次
  • 来自: ...
社区版块
存档分类
最新评论

菜鸟学习hibernate笔记<五>

阅读更多

新建一个类,包

·  这个类是父类,要注意,这里并没有将父类映射成表。
java 代码
  1. Person.java   
  2.   
  3. /*  
  4.  * Hibernate - 继承映射(每个具体类一个表)  
  5.  * 创建日期 2005-4-9  
  6.  * @author javamxj(分享java快乐)  
  7.  * @link  Blog: htpp://javamxj.mblogger.cn    
  8.  *              htpp://blog.csdn.net/javamxj/   
  9.  */  
  10. package  javamxj.inheritance.three;   
  11. public abstract class Person {   
  12. private Long id;   
  13. private String name;   
  14. /**  
  15.      * @hibernate.id   
  16.      *   column="ID"   
  17.      *   generator-class="hilo"   
  18.      *   unsaved-value="null"  
  19.      */  
  20. public Long getId() {   
  21. return id;   
  22. }   
  23. public void setId(Long id) {   
  24. this.id = id;   
  25. }   
  26. /**  
  27.      * @hibernate.property   
  28.      *   length = "24"  
  29.      */  
  30. public String getName() {   
  31. return name;   
  32. }   
  33. public void setName(String name) {   
  34. this.name = name;   
  35. }   
  36. }   
  37.   
java 代码
  1. Student.java    
  2.             package javamxj.inheritance.three;   
  3.             /**  
  4.              * @hibernate.class   
  5.              *   table="Student"  
  6.              */  
  7.             public class Student extends Person {   
  8.             private String studentNumber;   
  9.             /**  
  10.                  * @hibernate.property   
  11.                  *   length = "24"  
  12.                  */  
  13.             public String getStudentNumber() {   
  14.             return studentNumber;   
  15.             }   
  16.             public void setStudentNumber(String studentNumber) {   
  17.             this.studentNumber = studentNumber;   
  18.             }   
  19.             }   
  20.   
  21.     
java 代码
  1. Professor.java    
  2.             package javamxj.inheritance.three;   
  3.             /**  
  4.              * @hibernate.class   
  5.              *   table="Professor"  
  6.              */  
  7.             public class Professor extends Person {   
  8.             private int salary;   
  9.             /**  
  10.                  * @hibernate.property  
  11.                  */  
  12.             public int getSalary() {   
  13.             return salary;   
  14.             }   
  15.             public void setSalary(int salary) {   
  16.             this.salary = salary;   
  17.             }   
  18.             }   
  19.     
xml 代码
  1. Professor.hbm.xml   
  2.   
  3. <?xml version="1.0" encoding="GBK"?>  
  4. <!DOCTYPE hibernate-mapping PUBLIC   
  5. "-//Hibernate/Hibernate Mapping DTD 2.0//EN"   
  6. "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">  
  7. <hibernate-mapping  
  8. >  
  9. <class  
  10. name="javamxj.inheritance.three.Professor"  
  11. table="Professor"  
  12. dynamic-update="false"  
  13. dynamic-insert="false"  
  14. select-before-update="false"  
  15. optimistic-lock="version"  
  16. >  
  17. <id  
  18. name="id"  
  19. column="ID"  
  20. type="java.lang.Long"  
  21. unsaved-value="null"  
  22. >  
  23. <generator class="hilo">  
  24. <!--     
  25.                   To add non XDoclet generator parameters, create a file named    
  26.                   hibernate-generator-params-Professor.xml    
  27.                   containing the additional parameters and place it in your merge dir.    
  28.               -->  
  29. </generator>  
  30. </id>  
  31. <property  
  32. name="salary"  
  33. type="int"  
  34. update="true"  
  35. insert="true"  
  36. access="property"  
  37. column="salary"  
  38. />  
  39. <property  
  40. name="name"  
  41. type="java.lang.String"  
  42. update="true"  
  43. insert="true"  
  44. access="property"  
  45. column="name"  
  46. length="24"  
  47. />  
  48. <!--   
  49.             To add non XDoclet property mappings, create a file named   
  50.                 hibernate-properties-Professor.xml   
  51.             containing the additional properties and place it in your merge dir.   
  52.         -->  
  53. </class>  
  54. </hibernate-mapping>  
  55.   
xml 代码
  1. Student.hbm.xml   
  2.   
  3. <?xml version="1.0" encoding="GBK"?>  
  4. <!DOCTYPE hibernate-mapping PUBLIC   
  5. "-//Hibernate/Hibernate Mapping DTD 2.0//EN"   
  6. "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">  
  7. <hibernate-mapping  
  8. >  
  9. <class  
  10. name="javamxj.inheritance.three.Student"  
  11. table="Student"  
  12. dynamic-update="false"  
  13. dynamic-insert="false"  
  14. select-before-update="false"  
  15. optimistic-lock="version"  
  16. >  
  17. <id  
  18. name="id"  
  19. column="ID"  
  20. type="java.lang.Long"  
  21. unsaved-value="null"  
  22. >  
  23. <generator class="hilo">  
  24. <!--     
  25.                   To add non XDoclet generator parameters, create a file named    
  26.                   hibernate-generator-params-Student.xml    
  27.                   containing the additional parameters and place it in your merge dir.    
  28.               -->  
  29. </generator>  
  30. </id>  
  31. <property  
  32. name="studentNumber"  
  33. type="java.lang.String"  
  34. update="true"  
  35. insert="true"  
  36. access="property"  
  37. column="studentNumber"  
  38. length="24"  
  39. />  
  40. <property  
  41. name="name"  
  42. type="java.lang.String"  
  43. update="true"  
  44. insert="true"  
  45. access="property"  
  46. column="name"  
  47. length="24"  
  48. />  
  49. <!--   
  50.             To add non XDoclet property mappings, create a file named   
  51.                 hibernate-properties-Student.xml   
  52.             containing the additional properties and place it in your merge dir.   
  53.         -->  
  54. </class>  
  55. </hibernate-mapping>  
  56.   
数据库:
create table Student (
   ID bigint not null,
   studentNumber varchar(24),
   name varchar(24),
   primary key (ID)
)
create table Professor (
   ID bigint not null,
   salary integer,
   name varchar(24),
   primary key (ID)
)
java 代码
  1. Demo.java   
  2. /*  
  3.  * Hibernate - 继承映射(每个具体类一个表)  
  4.  * 创建日期 2005-4-9  
  5.  * @author javamxj(分享java快乐)  
  6.  * @link  Blog: htpp://javamxj.mblogger.cn    
  7.  *              htpp://blog.csdn.net/javamxj/   
  8.  */  
  9. package javamxj.inheritance.three;   
  10. import java.util.Iterator;   
  11. import java.util.List;   
  12. import net.sf.hibernate.HibernateException;   
  13. import net.sf.hibernate.Session;   
  14. import net.sf.hibernate.SessionFactory;   
  15. import net.sf.hibernate.Transaction;   
  16. import net.sf.hibernate.cfg.Configuration;   
  17. public class Demo {   
  18. public static void main(String[] args) {   
  19. try {   
  20. new Demo();   
  21. catch (HibernateException he) {   
  22. he.printStackTrace();   
  23. }   
  24. }   
  25. public Demo() throws HibernateException {   
  26. SessionFactory sf = new Configuration().configure()   
  27. .buildSessionFactory();   
  28. Session sess = sf.openSession();   
  29. Transaction tx = null;   
  30. try {   
  31. tx = sess.beginTransaction();   
  32. Student student = new Student();   
  33. student.setName("张三");   
  34. student.setStudentNumber("1234554321");   
  35. sess.save(student);   
  36. Professor professor = new Professor();   
  37. professor.setName("李四");   
  38. professor.setSalary(4300);   
  39. sess.save(professor);   
  40. tx.commit();   
  41. catch (HibernateException e) {   
  42. if (tx != null)   
  43. tx.rollback();   
  44. throw e;   
  45. finally {   
  46. sess.close();   
  47. }   
  48. sess = sf.openSession();   
  49. tx = null;   
  50. try {   
  51. tx = sess.beginTransaction();   
  52. List person = sess.find("from " + Person.class.getName());   
  53. for (Iterator it = person.iterator(); it.hasNext();) {   
  54. Person p = (Person) it.next();   
  55. System.out.println("人员 '" + p.getName() + "' its class is: "  
  56. + p.getClass().getName());   
  57. }   
  58. tx.commit();   
  59. catch (HibernateException e) {   
  60. if (tx != null)   
  61. tx.rollback();   
  62. throw e;   
  63. finally {   
  64. sess.close();   
  65. }   
  66. }   
  67. }   
  68.   
分享到:
评论

相关推荐

    java文集

    &lt;br&gt;DFS文件读写&lt;br&gt;网络爬虫之Spider&lt;br&gt;Java正则表达式的总结关键词: Java正则表达式 &lt;br&gt;批量上传--采集 (多个文件夹)&lt;br&gt;The Agile Way&lt;br&gt;hibernate mapping文件中的标记详解:关系标记&lt;br&gt;ANT 安装使用及...

    新手html学习笔记(仅供菜鸟成长参考).rar

    本资源“新手html学习笔记(仅供菜鸟成长参考).rar”为初学者提供了一条理解并掌握HTML的途径。下面将详细阐述HTML的相关知识点。 一、HTML概述 HTML是一种用于创建网页的标准标记语言,它由一系列元素组成,这些...

    很适合菜鸟学习的ASP.NET( C# )留言簿

    功能比较简单,比较适合菜鸟级的朋友们学习研究!&lt;br&gt;&lt;br&gt;联系作者:&lt;br&gt;CSDN主页:http://hi.csdn.net/yuxiangshui&lt;br&gt;校内网主页:http://xiaonei.com/getuser.do?id=221012237&lt;br&gt;QQ:115402708&lt;br&gt;&lt;br&gt;注:...

    项目辅助开发器1.0 Beta3

    全自动程序升级,保证第一时间体验最新版本&lt;br&gt;&lt;br&gt;本人菜鸟,以上功能肤浅,还请各位多多提意见。&lt;br&gt;&lt;br&gt;&lt;br&gt;我的个人主页:http://www.dirain.cn/&lt;br&gt;&lt;br&gt;博客园:http://dirain.cnblogs.com/&lt;br&gt;&lt;br&gt;QQ:562342&lt;br&gt;...

    项目辅助开发器 1.0 Beta2

    全自动程序升级,保证第一时间体验最新版本&lt;br&gt;&lt;br&gt;本人菜鸟,以上功能肤浅,还请各位多多提意见。&lt;br&gt;&lt;br&gt;&lt;br&gt;我的个人主页:http://www.dirain.cn/&lt;br&gt;&lt;br&gt;博客园:http://dirain.cnblogs.com/&lt;br&gt;&lt;br&gt;QQ:562342&lt;br&gt;...

    html 菜鸟级作品

    在`&lt;body&gt;`部分,常见的元素有`&lt;h1&gt;`至`&lt;h6&gt;`(标题)、`&lt;p&gt;`(段落)、`&lt;a&gt;`(链接)、`&lt;img&gt;`(图像)等。例如,一个简单的HTML页面可能包含如下代码: ```html &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;我的第一...

    点对点多线程文件传输

    点对点多线程文件传输&lt;br&gt;功能:&lt;br&gt;1。异步模式&lt;br&gt;2。多线程&lt;br&gt;&lt;br&gt;说明:&lt;br&gt;1。程序不是我写的,大家学习用,其中有基本多线程传输的头文件。&lt;br&gt;2。程序已经转换过,可以在VC++6。0中运行&lt;br&gt;3。菜鸟学习用,...

    菜鸟学习javascript实例教程.pdf

    JavaScript是Web开发中不可或缺的一部分,尤其对于初学者来说,理解并掌握其基本概念和操作至关重要。...通过实践这些例子,菜鸟们能够建立起对JavaScript基础的扎实理解,为进一步深入学习打下坚实的基础。

    中国学生城5.0

    论坛的前台帐号admin 密码 admin888&lt;br&gt; &lt;br&gt; 还有一点就是*安全*问题了 这个很值得强调的&lt;br&gt; 请注意修改index_left1.asp,菜鸟不改也没关系,因为是目录关系跟安全无关&lt;br&gt; 最基本的要把数据库的路径改了 然后把...

    IceLight V1.3.44[一线光-无驱,恢复SSDT,可杀IS,SS]

    杀进程&lt;br&gt;&lt;br&gt;1,不使用驱动的前提下,结束冰刃就像切豆腐&lt;br&gt;2,不使用V1.1.31中的DLL,直接代码注入干进程&lt;br&gt;3,即使无法openprocess也能尽量结束它.&lt;br&gt;&lt;br&gt;五.自保护&lt;br&gt;&lt;br&gt;主要是在ring3模式下HOOK了NtOpenThread...

    菜鸟教程html实例.zip

    4. **表格(Table)**:`&lt;table&gt;`、`&lt;tr&gt;`、`&lt;td&gt;`和`&lt;th&gt;`用于创建表格,`&lt;thead&gt;`、`&lt;tbody&gt;`和`&lt;tfoot&gt;`分别定义表头、主体和页脚部分。 5. **列表(Lists)**:`&lt;ul&gt;`和`&lt;ol&gt;`创建无序和有序列表,`&lt;li&gt;`定义...

    动网论坛计数器(适用于所有版本)

    动网6.0/6.1/7.0计数器&lt;br&gt; &lt;br&gt; 程序修改:试用爱情&lt;br&gt; 源程序:毒爱计数器&lt;br&gt; &lt;br&gt; 说明:本程序是我修改了毒爱计数器得来的,用来为统计动网论坛的日访问题也设计。&lt;br&gt; &lt;br&gt; 安装后就显示在论坛的底部。可以...

    体育竞猜插件 V1.2完美版 for dvbbs 7.0sp2

    &lt;br&gt; &lt;br&gt; &lt;br&gt; 二、V1.2 升级说明&lt;br&gt; &lt;br&gt; 1、本次升级优化了几乎所有的代码,新增加plus_sports_editgame.asp,plus_sports_admin.asp,plus_sports_log.asp三个文件&lt;br&gt; &lt;br&gt; 2、增加发布比赛后编辑修改的功能,...

    完美html教程,里面包含两个ppt html课件,一个一个html标签库文档

    此外,PPT可能还会涉及文本格式化标签,如&lt;h1&gt;到&lt;h6&gt;的标题级别,&lt;p&gt;段落,&lt;strong&gt;加粗,&lt;em&gt;斜体等,以及如何创建链接&lt;a&gt;和图像&lt;img&gt;。 接着是"HTML.ppt",这个可能是更深入的HTML教程,可能涵盖了更复杂的元素和...

    雷傲论坛XP3.0云林全插件美化版 V1.0

    &lt;br&gt; &lt;br&gt; 开发完这个版本,我们云林菜鸟工作室进一步投入到正式版的开发中,相信在一周内,会给大家带来更多的惊喜和更完美的程序!!!&lt;br&gt; &lt;br&gt; 请大家到 www.yunlin.cn/bbs 关注我们的最新动态!&lt;br&gt; *包括* 社区银行 |...

    w3cschool菜鸟教程(html)

    例如,`&lt;h1&gt;`至`&lt;h6&gt;`用于标题,`&lt;p&gt;`用于段落,`&lt;a&gt;`用于创建链接等。 3. **属性**:HTML标签可以有属性,属性提供了更多的信息。比如,`&lt;a&gt;`标签的`href`属性定义了链接的目标地址,`&lt;img&gt;`标签的`src`属性指定了...

    菜鸟教程离线html版

    2. **HTML标签**:HTML标签用于标记内容的性质,例如`&lt;h1&gt;`到`&lt;h6&gt;`用于标题,`&lt;p&gt;`用于段落,`&lt;a&gt;`用于创建链接,`&lt;img&gt;`用于插入图像,`&lt;div&gt;`作为内容分组的容器,`&lt;ul&gt;`和`&lt;li&gt;`用于无序列表,`&lt;ol&gt;`和`&lt;li&gt;`...

    w3cschool菜鸟教程离线版( 完整 )

    7. **表单元素**:`&lt;form&gt;`、`&lt;input&gt;`、`&lt;select&gt;`、`&lt;textarea&gt;`等用于创建用户输入和交互的表单。 8. **HTML5新特性**:包括新的语义化标签(如`&lt;article&gt;`、`&lt;section&gt;`)、离线存储、音频视频处理、canvas绘图...

    HTML代码 大全

    3. &lt;body&gt;&lt;/body&gt;:是Html文档的主体部分,在此标签对之间可以包含&lt;p&gt;、&lt;/p&gt;、&lt;h1&gt;、&lt;/h1&gt;、&lt;br&gt;、&lt;hr&gt;等等众多的标签,它们所定义的文本、图像等将会在浏览器的框内显示出来。 4. &lt;title&gt;&lt;/title&gt;:用于显示浏览器...

    强大的日历控件

    2. 注意事项&lt;br&gt;My97DatePicker目录是一个整体,不可破坏里面的目录结构,也不可对里面的文件改名,可以改目录名 &lt;br&gt;My97DatePicker.htm是必须文件,不可删除 &lt;br&gt;各目录及文件的用途: &lt;br&gt;WdatePicker.js 配置文件,在...

Global site tag (gtag.js) - Google Analytics