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
描述:
是否更新查询结果中会话缓存中的对象,可设置的值都定义在