網(wǎng)站程序和空間區(qū)別網(wǎng)絡(luò)推廣優(yōu)化網(wǎng)站
JPA持久化persistence.xml配置文件及參數(shù)詳解
JPA是Java Persistence API的簡稱,中文名Java持久層API,是JDK 5.0注解或XML描述對象-關(guān)系表的映射關(guān)系,并將運行期的實體對象持久化到數(shù)據(jù)庫中。
JPA包括以下三個方面的技術(shù):
1、 ORM映射元數(shù)據(jù)
JPA支持XML和JDK注解兩種元數(shù)據(jù)的形式,元數(shù)據(jù)描述對象和表之間的映射關(guān)系,框架據(jù)此景實體對象持久化到數(shù)據(jù)庫表中
2、API
用來操作實體對象,執(zhí)行CRUD操作,框架在后臺代替我們完成所有的事情,開發(fā)者能夠從繁瑣的JDBC和SQL代碼中解放出來
3、查詢語言
通過面向?qū)ο髷?shù)據(jù)庫的查詢語言查詢數(shù)據(jù),避免程序的SQL語句的高度耦合
持久化單元的具有的屬性:
1、該持久性單元內(nèi)的實體類
2、為上述實體類提供持久性支持的提供者或庫
JPA實現(xiàn),能夠為應(yīng)用提供持久性對象的庫。
3、上述實體類的數(shù)據(jù)源
是指提供實體類存儲的數(shù)據(jù)庫。數(shù)據(jù)源必須在服務(wù)器中注冊并且使用JNDI名稱指定。如果事務(wù)是由容器管理的JTA事務(wù), 那么數(shù)據(jù)源就必須是JTA數(shù)據(jù)源,如果事務(wù)是由應(yīng)用負責管理,那么數(shù)據(jù)源就必須是JDBC連接指定。
4、應(yīng)用使用的事務(wù)類型
<persistence>version = "2.1"xmlns = "http://xmlns.jcp.org/xml/ns/persistence"xmlns = "http://www.w3.org/2001/XMLSchema-instance"xsi:shemaLocation = "http://xmlns.jcp.org/xml/ns/persistencehttp://xmlns.jcp.org/xml/ns/persistence_2_1.xsd"<!--配置持久化單元--><persistence_unit name = "HelloWorldPU"><!--數(shù)據(jù)庫連接 Jta-data-source和 non-jta-data-source用于分別指定持久化提供商使用的JTA和/或non-JTA數(shù)據(jù)源的全局JNDI名稱(可選)--><jta-data-source>myDS</jta-data-source><!-- 聲明orm.xml所在位置.即指定映射文件 (可選) --> <mapping-file>product.xml</mapping-file> <!-- 以包含persistence.xml的jar文件為基準的相對路徑,添加額外的jar文件.指定托管類的附加JAR(可選) --> <jar-file>../lib/model.jar</jar-file><!--持久化類--><class>com.lzb.mitan</class><!--為映射的類禁用掃描--><exclude-unlisted-classes>true</exclude-unlisted-classes><!--設(shè)置屬性--><properties><!--自動輸出schema創(chuàng)建DDL語句 value的值可以是 create-drop / create / update
值得注意的是create-drop他會在SESSION關(guān)閉后刪除所有表開啟式再創(chuàng)建。 --><property name="hibernate.hbm2ddl.auto" value="update" /> <property name="hibernate.show_sql" value="true" /> <!--刪除/重建SQL架構(gòu)--><property name = "javax.persistence.schema-generation.database.action"value = "drop-and-create"/><!--格式化SQL--> <property name = "hibernate.format_sql" value = "true"/><property
name = "hibernate.use_sql_comments" value = "true"/></properties></persistence_unit>
</persistence>
持久化單元能夠被打包成war文件,作用域取決于persistence.xml的位置。
注意:persistence.xml文件的位置決定持久性的根——jar文件或者是包含META-INF的目錄