【Hibernate】Hibernate实体关系映射实例解析

22 篇文章 18 订阅
8 篇文章 0 订阅

//刘梦冰发表于2015-6-18


1、使用XML配置

 

Cat.java(实体类)

 

public classCat {
   
    private Integerid;
    private Stringname;
    private Stringdescription;
   
    public Integer getId() {
        returnid;
    }
    public void setId(Integer id) {
        this.id =id;
    }
    public String getName() {
        returnname;
    }
    public void setName(String name) {
        this.name =name;
    }
    public String getDescription(){
        returndescription;
    }
    public void setDescription(String description) {
        this.description =description;
    }
   
}


 

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

 

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEhibernate-mapping PUBLIC"-//Hibernate/HibernateMapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
   Mapping file autogenerated by MyEclipse Persistence Tools
-->
 
<!-- xml文件配置Hibernate实体映射 -->
 
<hibernate-mappingpackage="com.lmb.hibernate.bean"><!--实体类所在的包 -->
    <!-- 实体类 -->
    <classname="Cat"table="table_cat"><!--  name=""用来指定实体类, table=""用来指定数据库表格 -->
   
        <idname="id"column="id"type="java.lang.Integer"><!-- id主键 -->
            <generatorclass="native"/><!--数据库自动增长 -->
        </id>
       
         <propertyname="name"type="java.lang.String"><!-- 配置实体类变量-->
            <columnname="name"length="20"/><!--  数据库的字段名和字段长度  -->
        </property>
       
        <propertyname="description"type="java.lang.String"><!-- 配置实体类变量-->
            <columnname="description"length="50"/><!--  数据库的字段名和字段长度  -->
        </property>
       
    </class>
   
</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

 

<?xmlversion='1.0'encoding='UTF-8'?>
<!DOCTYPEhibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse HibernateTools.                   -->
<hibernate-configuration>
 
   <session-factory>
        <propertyname="dialect">org.hibernate.dialect.MySQLDialect</property>
        <propertyname="connection.url">jdbc:mysql://localhost:3306/hibernate?characterEncoding=UTF-8</property>
        <propertyname="connection.username">lmb</property>
        <propertyname="connection.password">lmb</property>
        <propertyname="connection.driver_class">com.mysql.jdbc.Driver</property>
   
   <!--hibernate中声明用XML配置的实体类 -->
   <mapping resource="com/lmb/hibernate/bean/Cat.hbm.xml"/>
   
   </session-factory>
 
</hibernate-configuration>




2、使用@注解配置


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


<span style="color:#008080;">package com.lmb.hibernate.bean;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

</span><span style="color:#ff0000;">@Entity                 //注解Entity表述该类能被hibernate持久化
@Table(name="table_cat") //指定该Entity对应的数据表明</span><span style="color:#008080;">
public class Cat {
	
	</span><span style="color:#ff0000;">@Id    //指定该列为主键
	@GeneratedValue(strategy=GenerationType.AUTO)   //主键类型auto为数据库自增长类型</span><span style="color:#008080;">
	private Integer id;
	
	</span><span style="color:#ff0000;">@Column(name="name")  //指定属性对应的数据库表的列为"name"</span><span style="color:#008080;">
	private String name;
	
	</span><span style="color:#ff0000;">@Column(name="description")  //指定属性对应的数据库表的列为"description"</span><span style="color:#008080;">
	private String description;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	
}
</span>

Hibernate.cfg.xml

<span style="color:#008080;"><?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

    <session-factory>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/hibernate?characterEncoding=UTF-8</property>
        <property name="connection.username">lmb</property>
        <property name="connection.password">lmb</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    
    
    <!--hibernate中声明用@注解配置的实体类 -->
    <mapping class="com.lmb.bean.Cat"/>
    </session-factory>

</hibernate-configuration></span>


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

 

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

 

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



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值