Hibernate实体关系映射实例解析


1、使用XML配置

 

Cat.java(实体类)

 

[html]  view plain  copy
  1. public classCat {  
  2.      
  3.     private Integerid;  
  4.     private Stringname;  
  5.     private Stringdescription;  
  6.      
  7.     public Integer getId() {  
  8.         returnid;  
  9.     }  
  10.     public void setId(Integer id) {  
  11.         this.id =id;  
  12.     }  
  13.     public String getName() {  
  14.         returnname;  
  15.     }  
  16.     public void setName(String name) {  
  17.         this.name =name;  
  18.     }  
  19.     public String getDescription(){  
  20.         returndescription;  
  21.     }  
  22.     public void setDescription(String description) {  
  23.         this.description =description;  
  24.     }  
  25.      
  26. }  


 

Cat.hbm.xml(作用:配置Hibernate中相应实体的映射)

 

[html]  view plain  copy
  1. <?xmlversionxmlversion="1.0"encoding="UTF-8"?>  
  2. <!DOCTYPEhibernate-mapping PUBLIC"-//Hibernate/HibernateMapping DTD 3.0//EN"  
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4. <!-- 
  5.    Mapping file autogenerated by MyEclipse Persistence Tools 
  6. -->  
  7.    
  8. <!-- xml文件配置Hibernate实体映射 -->  
  9.    
  10. <hibernate-mappingpackagehibernate-mappingpackage="com.lmb.hibernate.bean"><!--实体类所在的包 -->  
  11.     <!-- 实体类 -->  
  12.     <classnameclassname="Cat"table="table_cat"><!--  name=""用来指定实体类, table=""用来指定数据库表格 -->  
  13.      
  14.         <idnameidname="id"column="id"type="java.lang.Integer"><!-- id主键 -->  
  15.             <generatorclassgeneratorclass="native"/><!--数据库自动增长 -->  
  16.         </id>  
  17.          
  18.          <propertynamepropertyname="name"type="java.lang.String"><!-- 配置实体类变量-->  
  19.             <columnnamecolumnname="name"length="20"/><!--  数据库的字段名和字段长度  -->  
  20.         </property>  
  21.          
  22.         <propertynamepropertyname="description"type="java.lang.String"><!-- 配置实体类变量-->  
  23.             <columnnamecolumnname="description"length="50"/><!--  数据库的字段名和字段长度  -->  
  24.         </property>  
  25.          
  26.     </class>  
  27.      
  28. </hibernate-mapping>  


 

代码中的DOCTYPE指定的dtd文件位于hibernate.jar中。dtd文件为XML格式验证文件,Hibernate使用该dtd来验证该XML文件格式是否正确。如果hibernate.jar或者classpath中不存在该dtd文件,Hibernate会到指定的URL下载该文件。

在上述的映射文件中,<class>中的name表示实体类的路径和名称。table="”用来指定数据库表格,<id>用来声明表的主键,<id>中的属性name="id"表示实体类的属性id。数据库对应的字段名放在<column>中,<column>中的name表示表中的字段名,<generator class=" " />表示数据库表的主键类型,默认的类型是不自动增长类型,在<property>中映射表中的其他字段,<property>中的name属性值表示实体类的属性,type表示实体类属性的类型。表字段的映射放在<column>中,name的值是字段名,length表示字段长度。

 

 

Hibernate.cfg.xml

 

[html]  view plain  copy
  1. <?xmlversionxmlversion='1.0'encoding='UTF-8'?>  
  2. <!DOCTYPEhibernate-configuration PUBLIC  
  3.           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  4.           "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">  
  5. <!-- Generated by MyEclipse HibernateTools.                   -->  
  6. <hibernate-configuration>  
  7.    
  8.    <session-factory>  
  9.         <propertynamepropertyname="dialect">org.hibernate.dialect.MySQLDialect</property>  
  10.         <propertynamepropertyname="connection.url">jdbc:mysql://localhost:3306/hibernate?characterEncoding=UTF-8</property>  
  11.         <propertynamepropertyname="connection.username">lmb</property>  
  12.         <propertynamepropertyname="connection.password">lmb</property>  
  13.         <propertynamepropertyname="connection.driver_class">com.mysql.jdbc.Driver</property>  
  14.      
  15.    <!--hibernate中声明用XML配置的实体类 -->  
  16.    <mapping resource="com/lmb/hibernate/bean/Cat.hbm.xml"/>  
  17.      
  18.    </session-factory>  
  19.    
  20. </hibernate-configuration>  




2、使用@注解配置


Cat.java(加注解的实体类)


[html]  view plain  copy
  1. <span style="color:#008080;">package com.lmb.hibernate.bean;  
  2.   
  3. import javax.persistence.Column;  
  4. import javax.persistence.Entity;  
  5. import javax.persistence.GeneratedValue;  
  6. import javax.persistence.GenerationType;  
  7. import javax.persistence.Id;  
  8. import javax.persistence.Table;  
  9.   
  10. </span><span style="color:#ff0000;">@Entity                 //注解Entity表述该类能被hibernate持久化  
  11. @Table(name="table_cat") //指定该Entity对应的数据表明</span><span style="color:#008080;">  
  12. public class Cat {  
  13.       
  14.     </span><span style="color:#ff0000;">@Id    //指定该列为主键  
  15.     @GeneratedValue(strategy=GenerationType.AUTO)   //主键类型auto为数据库自增长类型</span><span style="color:#008080;">  
  16.     private Integer id;  
  17.       
  18.     </span><span style="color:#ff0000;">@Column(name="name")  //指定属性对应的数据库表的列为"name"</span><span style="color:#008080;">  
  19.     private String name;  
  20.       
  21.     </span><span style="color:#ff0000;">@Column(name="description")  //指定属性对应的数据库表的列为"description"</span><span style="color:#008080;">  
  22.     private String description;  
  23.       
  24.     public Integer getId() {  
  25.         return id;  
  26.     }  
  27.     public void setId(Integer id) {  
  28.         this.id = id;  
  29.     }  
  30.     public String getName() {  
  31.         return name;  
  32.     }  
  33.     public void setName(String name) {  
  34.         this.name = name;  
  35.     }  
  36.     public String getDescription() {  
  37.         return description;  
  38.     }  
  39.     public void setDescription(String description) {  
  40.         this.description = description;  
  41.     }  
  42.       
  43. }  
  44. </span>  

Hibernate.cfg.xml

[html]  view plain  copy
  1. <span style="color:#008080;"><?xml version='1.0' encoding='UTF-8'?>  
  2. <!DOCTYPE hibernate-configuration PUBLIC  
  3.           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  4.           "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">  
  5. <!-- Generated by MyEclipse Hibernate Tools.                   -->  
  6. <hibernate-configuration>  
  7.   
  8.     <session-factory>  
  9.         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
  10.         <property name="connection.url">jdbc:mysql://localhost:3306/hibernate?characterEncoding=UTF-8</property>  
  11.         <property name="connection.username">lmb</property>  
  12.         <property name="connection.password">lmb</property>  
  13.         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
  14.       
  15.       
  16.     <!--hibernate中声明用@注解配置的实体类 -->  
  17.     <mapping class="com.lmb.bean.Cat"/>  
[html]  view plain  copy
  1. </session-factory>  
  2.   
  3. /hibernate-configuration></span>  


有关几个配置文件的总结:

 

xxx.hbm.xml:配置Hibernate实体映射;

 

hibernate.cfg.xml:配置数据库驱动,并声明用XML文件或者@注解配置的实体类。

内容概要:本文深入探讨了Kotlin语言在函数式编程和跨平台开发方面的特性和优势,结合详细的代码案例,展示了Kotlin的核心技巧和应用场景。文章首先介绍了高阶函数和Lambda表达式的使用,解释了它们如何简化集合操作和回调函数处理。接着,详细讲解了Kotlin Multiplatform(KMP)的实现方式,包括共享模块的创建和平台特定模块的配置,展示了如何通过共享业务逻辑代码提高开发效率。最后,文章总结了Kotlin在Android开发、跨平台移动开发、后端开发和Web开发中的应用场景,并展望了其未来发展趋势,指出Kotlin将继续在函数式编程和跨平台开发领域不断完善和发展。; 适合人群:对函数式编程和跨平台开发感兴趣的开发者,尤其是有一定编程基础的Kotlin初学者和中级开发者。; 使用场景及目标:①理解Kotlin中高阶函数和Lambda表达式的使用方法及其在实际开发中的应用场景;②掌握Kotlin Multiplatform的实现方式,能够在多个平台上共享业务逻辑代码,提高开发效率;③了解Kotlin在不同开发领域的应用场景,为选择合适的技术栈提供参考。; 其他说明:本文不仅提供了理论知识,还结合了大量代码案例,帮助读者更好地理解和实践Kotlin的函数式编程特性和跨平台开发能力。建议读者在学习过程中动手实践代码案例,以加深理解和掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值