天天看點

jpa配置

JPA規範要求在類路徑(Eclipse工程的src目錄)的META-INF目錄下放置persistence.xml, 檔案的名稱是固

定的,配置模闆(此處是針對Hibernate)如下:

<?xml version="1.0"?>

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">

<persistence-unit name="itcast" transaction-type="RESOURCE_LOCAL">

<properties>

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />

<property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver" />

<property name="hibernate.connection.username" value="root" />

<property name="hibernate.connection.password" value="123456" />

<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/itcast?useUnicode=<property name="hibernate.max_fetch_depth" value="3" />

<property name="hibernate.show_sql" value="true" />

<property name="hibernate.hbm2ddl.auto" value="update"/>

</properties>

</persistence-unit>

</persistence>

說明:

其實這個hibernate.hbm2ddl.auto參數的作用主要用于:自動建立|更新|驗證資料庫表結構。如果不是此方

面的需求建議set value="none"。裡面可以設定的幾個參數:

? validate 每次加載hibernate時,驗證建立資料庫表結構,隻會和資料庫中的表進行比較,不會建立新

表,但是會插入新值。

? create 每次加載hibernate時都會删除上一次的生成的表,然後根據你的model類再重新來生成新

表,哪怕兩次沒有任何改變也要這樣執行,這就是導緻資料庫表資料丢失的一個重要原因。

? create-drop 每次加載hibernate時根據model類生成表,但是sessionFactory一關閉,表就自動删除。

? update 最常用的屬性,第一次加載hibernate時根據model類會自動建立起表的結構(前提是先建立

好資料庫),以後加載hibernate時根據 model類自動更新表結構,即使表結構改變了但表中的行仍然

存在不會删除以前的行。要注意的是當部署到伺服器後,表結構是不會被馬上建立起來的,是要等應用

第一次運作起來後才會。

總結:

? 請慎重使用此參數,沒必要就不要随便用。

? 如果發現資料庫表丢失,請檢查hibernate.hbm2ddl.auto的配置