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>