Hibernate中的Annotation註解與XML配置的使用

經過XML配置來實現持久化java

 首先咱們來創建一個實體類:數據庫

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中代碼以下
app

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


經過Annotation註解來實現持久化:spa

 首先一樣咱們來創建一個持久類hibernate

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中:      
code

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


接下來講一下註解的詳細狀況:對象

@Entity       表示該類將使用註解來實現持久化
@Table(name="t_teacher")  當類名和表名不一致時使用該註解,能夠實現Teacher對應數據庫表t_teacher
@Transient                          標註爲透明,表示數據庫中將不創建該字段
@Enumerated(EnumType.STRING)         代表該字段是枚舉類型


總結:明顯使用Annotation來實現持久化更加簡單,如今企業中在Hibernate通常都使用Annotation,而不多使用XML。

相關文章
相關標籤/搜索