轉載:http://www.cnblogs.com/fingerboy/p/5233939.html
實體類就是指普通的POJO,Hibernate並不知道那個實體類對應數據庫的哪一張表,所以還需要配置一下,常用的方式就是*.hbm.xml文件[配置與@注解配置,這里介紹前者的詳細屬性:
<?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"> <!-- package聲明pojo類所在的包,如果不寫那么在class的name屬性里需要指定包名全路徑 schema指數據庫模式,一個模式下可以有多張表 --> <hibernate-mapping package="com.wang.pojo"> <!-- class指映射一下pojo類,提供了公共的無參構造方法,通過反射產生對象 屬性用private修飾,並且生成get,set方法 類不能用final來修飾, 類需要指明標識 ,即id屬性 name:表示pojo類名 table:標識對應的數據庫表名 --> <class name="User" table="user"> <!-- id:表示實體類的標識 對應數據庫表中的主鍵 name:是指實體類的標識屬性名 column表示對應數據庫表的列名,如果不寫,則數據庫表中列名和屬性名一致 length:標識數據庫表中對應數據類型的長度,如果不寫有默認長度 type表示類型,如果不寫hibernate可以找到對應的pojo類的屬性的類型,可以寫成int,string,java.lang.Integer等等 --> <id name="id" column="id" > <!-- 主鍵生成策略 native:根據底層數據庫能力選擇identity,sequence,或者hilo中的一個 --> <generator class="native"></generator> </id> <!-- 實體類屬性 --> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping>
- 主鍵映射
實體類最好有一個主鍵列,並有get/set方法,主鍵最好使用可以為Null值的數據類型,比如Integer,Long,String,而不要使用int ,long等,因為如果主鍵為null,表示這個實體類還沒有保存到數據庫,是一個臨時狀態(Transient),而int,long等基本數據類型沒有這個功能.
主鍵生成規則:也成為主鍵生成策略,用的最多的就是native(自增長策略),
native:自動方式,根據底層數據庫自動選擇.
在class標簽下,配置主鍵映射為:
<id name="id" column="id" > <generator class="native"></generator> </id>
- 普通屬性映射
普通屬性就是除主鍵外,java基本數據類型的屬性,比如Integer(int),String,Date等,注意Integer默認為null,int默認為0.
xml中使用<property />標簽配置普通屬性.type指定列類型,
日期屬性配置,與普通屬性配置相同,只是type中指定的是日期類型即可,取值可以有date,time,timestamp(簡寫方式)