1. JPA(Java Persistence API) Java持久化API。是sun公司在ORM领域的规范,旨在结束Hibernate,TopLink等各
自为政的局面。使用JPA的好处是具有良好的伸缩性和可维护性。
2. JPA开发环境的搭建
需要的jar包:
Hibernate核心包(8个文件)hibernate-distribution-3.3.1.GA
-----------------------------------------------------------
hibernate3.jar
lib/bytecode/cglib/hibernate-cglib-repack-2.1_3.jar
lib/required/*.jar
Hibernate注解包(3个文件):hibernate-annotations-3.4.0.GA
---------------------------------------------------------
hibernate-annotations.jar
lib/ejb3-persistence.jar, hibernate-commons-annotations.jar
Hibernate针对JPA的实现包(3个文件):hibernate-entitymanager-3.4.0.GA
----------------------------------------------------------------------
hibernate-entitymanager.jar
lib/test/log4j.jar, slf4j-log4j12.jar
配置文件:persistence.xml,该文件应该放在类路径下的META-INF目录中。
Transaction-type="RESOURCE_LOCAL"
<? xml version = "1.0" ?>
- < persistence xmlns = "http://java.sun.com/xml/ns/persistence" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
- 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=true&characterEncoding=UTF-8" />
- < property name = "hibernate.max_fetch_depth" value = "3" />
- < property name = "hib..ernate.show_sql" value = "true" />
- < property name = "hibernate.hbm2ddl.auto" value = "update" />
- </ properties >
- </ persistence-unit >
- </ persistence >
Tansaction-type="JTA"
- <? xml version = "1.0" encoding = "UTF-8" ?>
- < persistence version = "1.0"
- xmlns:persistence = "http://java.sun.com/xml/ns/persistence"
- xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation = "http://java.sun.com/xml/ns/persistence persistence_1_0.xsd " >
- <!--
- Name属性用于定义持久化单元的名字 (name必选,空值也合法);
- transaction-type 指定事务类型(可选)
- -->
- < persistence-unit name = "unitName" transaction-type = "JTA" >
- <!-- 描述信息.(可选) -->
- < description > </ description >
- <!-- javax.persistence.PersistenceProvider接口的一个实现类(可选) -->
- < provider > </ provider >
- <!-- Jta-data-source和 non-jta-data-source用于分别指定持久化提供商使用的JTA和/或non-JTA数据源的全局JNDI名称(可选) -->
- < jta-data-source > java:/MySqlDS </ jta-data-source >
- < non-jta-data-source > </ non-jta-data-source >
- <!-- 声明orm.xml所在位置.(可选) -->
- < mapping-file > product.xml </ mapping-file >
- <!-- 以包含persistence.xml的jar文件为基准的相对路径,添加额外的jar文件.(可选) -->
- < jar-file > ../lib/model.jar </ jar-file >
- <!-- 显式列出实体类,在Java SE 环境中应该显式列出.(可选) -->
- < class > com.domain.User </ class >
- < class > com.domain.Product </ class >
- <!-- 声明是否扫描jar文件中标注了@Enity类加入到上下文.若不扫描,则如下:(可选) -->
- < exclude-unlisted-classes />
- <!-- 厂商专有属性(可选) -->
- < properties >
- <!-- hibernate.hbm2ddl.auto= create-drop / create / update -->
- < property name = "hibernate.hbm2ddl.auto" value = "update" />
- < property name = "hibernate.show_sql" value = "true" />
- </ properties >
- </ persistence-unit >
- </ persistence >