hibernate配置
?
<hibernate-configuration> <!--?用來描述數據庫的鏈接?--> <session-factory> <!--?驅動?--> <property?name="connection.driver_class"> com.mysql.jdbc.Driver </property> <!--?url?--> <property?name="connection.url"> jdbc:mysql://localhost:3306/hibernate0909 </property> <!--?username?--> <property?name="connection.username">root</property> <!--?password?--> <property?name="connection.password">123456</property> <!--? hibernate針對建表的操作 update:如果有表,檢查表的結構,如果沒有則創建 create人-drop?啟動hibernate創建表,結束hibernate刪除表 create??每次啟動都重新創建表 validate?每次啟動都檢查表的結構 --> <property?name="hbm2ddl.auto">update</property> <!--?在控制臺顯示sql語句?--> <property?name="show_sql">true</property> <mapping?resource="cn/itcast/hibernate0909/idgenerator/increment/Person.hbm.xml"?/> </session-factory> </hibernate-configuration>?
?
設置主鍵:
<class?name="cn.itcast.hibernate0909.idgenerator.identity.Person"?table="person"> <id?name="pid"?type="java.lang.Long"?length="5"> <column?name="pid"></column> <!--? 主�產生器--> <generator?class="identity"></generator> </id> <property?name="pname"?type="java.lang.String"?length="20"></property> <property?name="psex"?type="java.lang.String"?length="5"></property> </class>主鍵產生器 class="increment" (主鍵類型為java.lang.Long ?length="5")
?Hibernate: select max(pid) from person
Hibernate: insert into person (pname, psex, pid) values (?, ?, ?)
??increment
????hibernate 內部回去查詢該表中的主鍵的最大值
主鍵產生器 class="identity"(主鍵類型為java.lang.Long ?length="5"),這時需要手動設置數據庫的id為自增長
Hibernate: insert into person (pname, psex) values (?, ?)
? 因為沒有發出select max語句,所以identity得效率比increment要高
? 缺點:主鍵不連貫
主鍵產生器 class="assigned"(主鍵類型為java.lang.Long ?length="5")
????????????????在映射文件中,該對象的主鍵生成機制是assigned,在程序中需要賦值
主鍵產生器 class="uuid"(主鍵類型為java.lang.String)javabean中設置id為String
?
?
主鍵的生成機制
????*increment
????????效率比較低的,但是主鍵的值是連續的
????*indentity
????????根據底層的數據庫的自增生成,效率比較高,但是主鍵的值不連續
????*assigned
????????手動賦值
????*uuid
????????
????*sequence(oracle)
?
總結
以上是生活随笔為你收集整理的hibernate配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javax.naming.NameNot
- 下一篇: SessionFactory 概述