hibernate用註解配置實體類的映射

1、註解類spring

1. @Table

聲明瞭該實體bean映射指定的表(table),目錄(catalog)和schema名字

2. @Id

聲明瞭該實體bean的標識屬性(對應表中的主鍵)。

3. @Column

聲明瞭屬性到列的映射。該註解有以下的屬性:

name 可選,列名(默認值是屬性名)

unique 可選,是否在該列上設置惟一約束(默認值false)

nullable 可選,是否設置該列的值能夠爲空(默認值false)

insertable 可選,該列是否做爲生成的insert語句中的一個列(默認值true)

updatable 可選,該列是否做爲生成的update語句中的一個列(默認值true)

columnDefinition 可選,爲這個特定列覆蓋sql ddl片斷(這可能致使沒法在不一樣數據庫間移植)

table 可選,定義對應的表(默認爲主表)

length 可選,列長度(默認值255)

precision 可選,列十進制精度(decimal precision)(默認值0)

scale 可選,若是列十進制數值範圍(decimal scale)可用,在此設置(默認值0)

4. @GeneratedValue

聲明瞭主鍵的生成策略。該註解有以下屬性:

strategy 指定生成的策略(JPA定義的),這是一個GenerationType。默認是GenerationType. AUTO

GenerationType.AUTO 主鍵由程序控制

GenerationType.TABLE 使用一個特定的數據庫表格來保存主鍵

GenerationType.IDENTITY 主鍵由數據庫自動生成(主要是自動增加類型)

GenerationType.SEQUENCE 根據底層數據庫的序列來生成主鍵,條件是數據庫支持序列。這個值要與generator一塊兒使用,generator 指定生成主鍵使用的生成器(多是orcale中的序列)。

5. GenericGenerator

聲明瞭一個hibernate的主鍵生成策略。支持十三種策略。該註解有以下屬性:

name 指定生成器名稱,它被應用於@GeneratedValue的generator的值。

strategy 指定具體生成器的類名(指定生成策略)。

parameters 獲得strategy指定的具體生成器所用到的參數。

6. @Transient

聲明瞭非持久化屬性,即數據庫中沒有相應的映射字段,是一個普通屬性。

7. @Temporal

聲明瞭日期類型。

TemporalType.DATE 日期,例:2011-04-12

TemporalType.TIME 時間,例:22:50:30

TemporalType.TIMESTAMP 日期和時間,例:2011-04-12 22:51:30

2、看例子sql

Role.class數據庫

@Entity
@Table(name="role")
public class Role implements Serializable{

    private String roleId;
    private String roleName;
    @Id
    @Column(name="roleid")
    @GenericGenerator(name="generator", strategy = "uuid.hex")
    @GeneratedValue(generator="generator")
    public String getRoleId() {
        return roleId;
    }
    public void setRoleId(String roleId) {
        this.roleId = roleId;
    }
    @Column(name="rolename")
    public String getRoleName() {
        return roleName;
    }
    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }
    
}

Student.classsession

@Entity        
@Table(name="student")    
public class Student implements Serializable{
    
    private String stuId;
    private String stuName;
    private Role role;
    
    @Id
    @Column(name="stuid")
    @GenericGenerator(name="generator",strategy="uuid.hex")
    @GeneratedValue(generator="generator")
    public String getStuId() {
        return stuId;
    }
    public void setStuId(String stuId) {
        this.stuId = stuId;
    }
    @Column(name="stuno")
    public String getStuNo() {
        return stuName;
    }
    public void setStuNo(String stuNo) {
        this.stuName = stuNo;
    }
}

3、在spring容器的配置ui

實體類寫好以後,須要在spring容器中加載,在配置sessionFactory時進行配置,有兩種配置的方式this

一、使用annotatedClassesspa

        <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">  
        <property name="dataSource" ref="dataSource" />  
            <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
            </props>
        </property>
        <!-- <property name="packagesToScan"  value="com.demo.entity"/> -->
        <property name="annotatedClasses">
            <list>
                <value>com.demo.entity.Role</value>
                <value>com.demo.entity.Student</value>
            </list>
        </property>
    </bean> 

二、使用packagesToScan直接對實體類進行掃描hibernate

        <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">  
        <property name="dataSource" ref="dataSource" />  
            <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
            </props>
        </property>
        <property name="packagesToScan"  value="com.demo.entity"/>
    </bean>
相關文章
相關標籤/搜索