Toplink JPA.docx

上传人:b****6 文档编号:8454893 上传时间:2023-01-31 格式:DOCX 页数:14 大小:38.16KB
下载 相关 举报
Toplink JPA.docx_第1页
第1页 / 共14页
Toplink JPA.docx_第2页
第2页 / 共14页
Toplink JPA.docx_第3页
第3页 / 共14页
Toplink JPA.docx_第4页
第4页 / 共14页
Toplink JPA.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

Toplink JPA.docx

《Toplink JPA.docx》由会员分享,可在线阅读,更多相关《Toplink JPA.docx(14页珍藏版)》请在冰豆网上搜索。

Toplink JPA.docx

ToplinkJPA

ToplinkJPA

Toplink是Oracle公司捐献给开源社区的,是最早的ORM映射框架之一,也是对JPA规范支持最好的一个框架。

它遵循CDDLv1.01开源许可协议,官方主页是http:

//www.oracle.com/technology/global/cn/products/ias/toplink/index.html。

14.3.1 Toplink与JPA

Toplink最新的版本是Version2Build41,Oracle已经将其捐献给Eclipse社区,并且在Sun的开源应用服务器Glassfish中,被使用为默认的JPA的实现。

由于它有良好的商业背景及广泛的应用,因此对使用JPA的开发人员来说,它便是更好的实现者选择。

14.3.2 Toplink下载

使用浏览器打开

下载后找到一个JAR包文件glassfish-persistence-installer-v2-b41.jar,它是可运行的JAR包,需要使用命令行解压缩。

例如笔者将其保存在E:

\down文件夹下,则命令行的命令如下所示。

java-jarglassfish-persistence-installer-v2-b41.jar

运行后,命令行页面如图14-7所示。

   

图14-6 Toplink下载页面                        图14-7 解压缩Toplink文件

解压缩文件后,会在相应的文件目录下生成glassfish-persistence文件夹,例如这里生成的目录是E:

\down\glassfish-persistence。

在该文件目录下,找到如下所示的两个JAR包文件,这些就是Toplink运行所必需的类包。

—toplink-essentials.jar:

Toplink的核心类包文件。

—toplink-essentials-agent.jar:

Toplink运行时代理类包,支持JVM级别的AOP。

方法:

oracle.toplink.essentials.PersistenceProvider

com.User

microsoft:

sqlserver:

//localhost:

1433;DatabaseName=student"/>

配置日志

在Toplink中有关日志配置可以有多种情况,例如日志的级别、日志的输出内容等。

这些日志的配置如以下属性所示。

—属性名:

toplink.logging.logger

描述:

日志的实现类名。

可选值:

—DefaultLogger(默认):

Toplink默认的日志实现类,oracle.toplink.essentials.logging.DefaultSessionLog。

—JavaLogger:

使用JDK自带的java.util.logging的实现类,oracle.toplink.essentials.logging.JavaLog。

—自定义日志类的全名:

如com.fengmanfei.jpa.logger.MyCustomLogger,自定义的日志类必须实现oracle.toplink.essentials.logging.SessionLog类。

示例如下:

 

—属性名:

toplink.logging.level

描述:

日志级别,这些值定义在java.util.logging.Level类中。

可选值:

级别由低到高顺序依次如下所示。

—OFF:

不记录任何日志。

—SEVERE:

记录Toplink不能继续运行时的严重异常和登录时的异常,并且记录异常的堆栈信息。

—WARNING:

记录Toplink并不是影响运行的异常没有记录到SEVERE级别的异常,但这种方式记录的异常不包含堆栈信息。

—INFO(默认):

记录每次的登录和退出会话的信息(包括用户名)和会话连接后详细的登录信息。

—CONFIG:

仅记录登录、JDBC连接和数据库信息。

—FINE:

记录SQL执行的语句。

—FINER:

记录的内容与WARNING级别相同,但记录中包括异常的堆栈信息。

—FINEST:

记录所有的日志信息。

示例如下:

 

—属性名:

toplink.logging.level.

描述:

配置不同日志类别的级别,日志的分类都定义在oracle.toplink.essentials.logging.SessionLog类中。

可选值:

—SQL:

SQL日志。

—TRANSACTION:

事务相关日志。

—EVENT:

事件相关日志。

—CONNECTION:

数据库会话相关日志。

—QUERY:

查询数据库相关日志。

—CACHE:

缓存相关日志。

—SEQUENCING:

生成sequence相关日志。

—EJB:

EJB日志。

—DMS:

Oracle动态监控系统(OracleDynamicMonitoringSystem)相关日志。

—EJB_OR_METADATA:

EJB注释相关日志。

—WEAVER:

类织入(classweaver)日志。

—PROPERTIES:

开发环境属性相关日志。

示例如下:

—属性名:

toplink.logging.timestamp

描述:

是否输出日志的时间戳。

可选值:

—true(默认):

记录时间戳。

—false:

不记录时间戳。

示例如下:

 

—属性名:

toplink.logging.thread

描述:

是否输出日志线程ID。

可选值:

—true(默认):

记录线程ID。

—false:

不记录线程ID。

示例如下:

 

—属性名:

toplink.logging.session

描述:

是否输出日志会话ID。

可选值:

—true(默认):

记录会话ID。

—false:

不记录会话ID。

示例如下:

 

—属性名:

toplink.logging.exceptions

描述:

是否在应用程序抛出异常之前记录异常日志。

可选值:

—true:

记录所有的异常。

—false(默认):

不记录应用程序的异常。

示例如下:

配置缓存

缓存能够提高系统的性能,系统要根据不同的需求选择最佳的优化方式。

Toplink提供了各种情况下,各种缓存的设置方式,这些配置如下所示。

—属性名:

toplink.cache.type.default

描述:

默认会话缓存的类型,这些值是定义在oracle.toplink.essentials.config.CacheType类中的常量。

可选值:

—Full:

完全缓存实体,实体只有删除后才同时删除内存中的缓存。

建议在数据量小,内存足够大时采用该种缓存类型。

—Weak:

与Full类似,不过缓存采用的是弱引用(WeakReference)的方式,当垃圾回收时,会自动回收弱引用的对象。

如果使用了事务,建议采用该种缓存方式。

—HardWeak:

与Weak类似,但是对二级缓存采用强缓存(HardReference)。

—SoftWeak(默认):

与Weak类似,但是对二级缓存采用软缓存(SoftReference)。

当内存不足时,Toplink会自动优化回收缓存的对象,大多数情况下,建议采用该配置。

—NONE:

不缓存实体,不建议采用该配置。

★提示★

有关弱引用、软引用的相关知识涉及JVM底层对象引用优化的内容,读者若想进一步了解,可以参阅java.lang.ref.SoftReference和java.lang.ref.WeakReference类相关知识。

示例如下:

—属性名:

toplink.cache.size.default,

描述:

默认缓存的最大容量,可以为0到Integer.MAX_VALUE之间的数值,默认为1000。

示例如下:

 

—属性名:

toplink.cache.shared.default

描述:

默认是否共享缓存。

可选值:

—true(默认):

多个会话共享缓存。

—false:

每个会话分别缓存。

示例如下:

 

—属性名:

toplink.cache.type.

描述:

针对特定实体设置缓存类型,其中ENTITY为@Entity标注的实体名称,类型值toplink.cache.type.default配置相同。

可选值:

—Full:

同toplink.cache.type.default。

—HardWeak:

同toplink.cache.type.default。

—None:

同toplink.cache.type.default。

—SoftWeak(默认):

同toplink.cache.type.default。

—Weak:

同toplink.cache.type.default。

示例如下:

—属性名:

toplink.cache.size.

描述:

针对特定实体缓存的最大容量,可以为0到Integer.MAX_VALUE之间的数值,默认为1000。

示例如下:

 

—属性名:

toplink.cache.shared.

描述:

指定实体是否共享缓存。

可选值:

—true(默认):

多个会话共享缓存。

—false:

每个会话分别缓存。

示例如下:

配置JDBC和数据库

在J2SE环境中,配置JDBC时可以采用如下所示的配置进行优化。

—属性名:

toplink.jdbc.bind-parameters

描述:

是否使用预编译SQL和参数查询。

可选值:

—true(默认):

预编译SQL和参数查询。

—false:

不使用。

示例如下:

—属性名:

toplink.jdbc.driver

描述:

JDBC驱动的类的全名。

示例如下:

—属性名:

toplink.jdbc.password

描述:

JDBC连接的密码。

示例如下:

—属性名:

toplink.jdbc.read-connections.max

描述:

读取JDBC数据库时最大连接数,可以为0到Integer.MAX_VALUE之间的数值,默认为2。

示例如下:

—属性名:

toplink.jdbc.read-connections.min

描述:

读取JDBC数据库时最小连接数,可以为0到Integer.MAX_VALUE之间的数值,默认为2。

示例如下:

—属性名:

toplink.jdbc.read-connections.shared

描述:

读取数据库时,是否共享连接。

可选值:

—true:

允许用户共享连接。

—false(默认):

不共享连接。

示例如下:

—属性名:

toplink.jdbc.url

描述:

JDBC连接的URL。

示例如下:

oracle:

thin:

@LOCALHOST:

1521:

ORCL"/>

—属性名:

toplink.jdbc.user

描述:

JDBC连接的用户名。

示例如下:

—属性名:

toplink.jdbc.write-connections.max

描述:

写JDBC数据库时最大连接数,可以为0到Integer.MAX_VALUE之间的数值,默认为10。

示例如下:

—属性名:

toplink.jdbc.write-connections.min

描述:

写JDBC数据库时最小连接数,可以为0到Integer.MAX_VALUE之间的数值,默认为5。

示例如下:

另外,如果在J2EE环境中,也可以配置数据库相关的具体配置,如下所示。

—属性名:

toplink.target-database

描述:

指定JPA使用的数据库类型,这些值定义在oracle.toplink.essentials.config.TargetDatabase枚举类型的常量中。

可选值:

Auto(默认)、Attunity、Cloudscape、Database、DB2、DB2Mainframe、DBase、Derby、

HSQL、Informix、JavaDB、MySQL4、Oracle、PointBase、PostgreSQL、SQLAnyWhere、SQLServer、Sybase和TimesTen。

示例如下:

—属性名:

toplink.session-name

描述:

指定会话的名称,如果要在持久化上下文外访问Toplink会话需指定该名称。

如果不指定,则自动生成一个唯一标识。

示例如下:

—属性名:

toplink.target-server

描述:

指定JPA运行的服务器类型,这些值定义在oracle.toplink.essentials.config.TargetServer枚举类型的常量中。

可选值:

None(默认)、OC4J_10_1_3、SunAS9。

示例如下:

配置DDL

DDL是针对映射是否自动更新数据库脚本的配置,配置这些内容可以优化对DDL的支持。

有关DDL的配置如下所示。

—属性名:

toplink.ddl-generation

描述:

指定DDL生成方式,这些值定义在cle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider类中。

可选值:

—none(默认):

不生成DDL,不自动生成数据库。

—create-tables:

只生成不存在的表,不改变原有表结构。

—drop-and-create-tables:

删除原表,重新生成新表。

示例如下:

—属性名:

toplink.application-location

描述:

指定DDL生成SQL脚本的文件的目录,默认为当前的"."+File.separator。

示例如下:

\ddl\"/>

 

—属性名:

toplink.create-ddl-jdbc-file-name

描述:

指定DDL生成创建SQL脚本的文件名,默认为createDDL.jdbc。

示例如下:

—属性名:

toplink.drop-ddl-jdbc-file-name

描述:

指定DDL生成删除SQL脚本的文件名,默认为dropDDL.jdbc。

示例如下:

—属性名:

toplink.ddl-generation.output-mode

描述:

指定DDL的输出方式,这些值定义在cle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider类中。

可选值:

—both(在J2SE中默认):

即生成SQL文件,又在数据库中执行。

—database:

仅在数据库中执行。

—sql-script(在JavaEE中默认):

仅生成SQL文件。

示例如下:

配置查询优化

在本书的第9.3.6节中,曾讲述了对于不同的实现框架,可以设置提示来优化查询。

Toplink中也提供了针对查询的优化配置,这些可配置的常量都定义在oracle.toplink.essentials.config.TopLinkQueryHints类中。

—属性名:

toplink.jdbc.bind-parameters

描述:

是否使用参数查询,可设置的值都定义在oracle.toplink.essentials.config.HintValues类中。

可选值:

—true:

使用参数查询。

—false:

不使用参数查询。

—PersistenceUnitDefault(默认):

根据JDBC的设置决定是否使用参数查询。

示例如下:

importoracle.toplink.essentials.config.HintValues;

importoracle.toplink.essentials.config.TopLinkQueryHints;

query.setHint(TopLinkQueryHints.BIND_PARAMETERS,HintValues.TRUE);

—属性名:

toplink.pessimistic-lock

描述:

是否使用悲观锁(PessimisticLock),可设置的值都定义在oracle.toplink.essentials.config.PessimisticLock类中。

可选值:

—NoLock(默认):

不使用悲观锁。

—Lock:

相当于SELECT....FORUPDATE。

—LockNoWait:

相当于SELECT....FORUPDATENOWAIT。

示例如下:

importoracle.toplink.essentials.config.PessimisticLock;

importoracle.toplink.essentials.config.TopLinkQueryHints;

query.setHint(TopLinkQueryHints.PESSIMISTIC_LOCK,PessimisticLock.LockNoWait);

—属性名:

toplink.refresh

描述:

是否更新查询结果中会话缓存中的对象,可设置的值都定义在

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1