首页 > Web开发 > 详细

Hibernate中的Annotation注解与XML配置的使用

时间:2015-10-30 19:06:36      阅读:715      评论:0      收藏:0      [点我收藏+]

通过XML配置来实现持久化

 首先我们来建立一个实体类:

package com.hibernate.model;

public class Student {
    private int id;
    private String name;
    private int age;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
    
}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.hibernate.model">

    <class name="Student" table="t_student">
        <id name="id" column="s_id">     
            <generator class="native" />
        </id>
        <property name="age" />     <!-- 若字段属性值与数据库字段相同可不写 -->
        <property name="name" />
    </class>
</hibernate-mapping>

      XML文件中的id用于指明哪个column字段是数据库表t_student中的主键,property中的column属性用于指明类属性名对应数据库表的哪个字段,如果属性名和字段名一直,该column可以省略,如上中的age和name属性。

至此,只要将该XML文件加入Hibernate的hibernate.cfg.xml中就可以:   hibernate.cfg.xml中代码如下

     <mapping resource="com/hibernate/model/Student.hbm.xml" />  <!-- XML文件的方式 -->


通过Annotation注解来实现持久化:

 首先同样我们来建立一个持久类

package com.hibernate.model;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
 * 注意注解一点要写在get()方法上,写在Field中有点违反面向对象编程,因为Hibernate会访问限定符为private的该属性
 * @author Administrator
 *
 */
@Entity
@Table(name="t_teacher")
public class Teacher {   //类名必须和数据库的表明一致     
    private int id;
    private String addr;
    private String sex;
    private String youwifename;
    private Zhicheng _zhicheng;   //枚举类型
    
    public enum Zhicheng{A,B,C}  //实现枚举类型
    
    @Enumerated(EnumType.STRING)
    public Zhicheng get_zhicheng() {
        return _zhicheng;
    }
    public void set_zhicheng(Zhicheng _zhicheng) {
        this._zhicheng = _zhicheng;
    }
    
    
    @Transient                          //标注为透明,表示数据库中将不建立该字段
    public String getYouwifename() {
        return youwifename;
    }
    public void setYouwifename(String youwifename) {
        this.youwifename = youwifename;
    }
    @Id
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getAddr() {
        return addr;
    }
    public void setAddr(String addr) {
        this.addr = addr;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    
    
    
}


OK!注解实现持久化很简单吧。接下来只要将注解的类加入hibernate.cfg.xml中:      

    <mapping class="com.hibernate.model.Teacher"/>      <!--注解的方式  -->


接下来说一下注解的详细情况:

@Entity       表示该类将使用注解来实现持久化
@Table(name="t_teacher")  当类名和表名不一致时使用该注解,可以实现Teacher对应数据库表t_teacher
@Transient                          标注为透明,表示数据库中将不建立该字段
@Enumerated(EnumType.STRING)         表明该字段是枚举类型


总结:明显使用Annotation来实现持久化更加简单,现在企业中在Hibernate一般都使用Annotation,而很少使用XML。

Hibernate中的Annotation注解与XML配置的使用

原文:http://my.oschina.net/kaixuan1995/blog/524141

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!