菜鸟学习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.   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值