博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Liferay 6开发学习(二十六):数据库连接相关问题
阅读量:6623 次
发布时间:2019-06-25

本文共 2922 字,大约阅读时间需要 9 分钟。

Liferay中怎么更换数据库?

常碰到有人问Liferay怎么更换数据库,怎么修改数据库连接。在我们第一次启动Liferay的时候,会有一个配置向导,在此配置向导我们可以选择数据库,并配置数据库连接信息。如果我现在在向导里面选择了PostgreSQL数据库,但是我后面想要变更为Oracle怎么办呢?

在执行完配置向导后会在Liferay的目录下面生成一个文件portal-setup-wizard.properties。我们打开此文件,可以在里面看到如下的数据库连接信息。

jdbc.default.driverClassName=org.postgresql.Driverjdbc.default.url=jdbc:postgresql://localhost:5432/liferay62jdbc.default.username=postgresjdbc.default.password=postgres

这几行我们一看就知道是数据库的连接信息了,配置的为JDBC连接的驱动名称、JDBC连接串、数据库的用户名、数据库的密码等几个信息,我们需要要更换数据库,在这里将数据库修改为我们想要的即可。

为什么看到有些教程或文章说是在ROOT/WEB-INF/classes/portal-ext.properties文件里面修改呢?请先参看《》这篇博客的前面一小部分,在这两个文件里面修改都是可以的,看自己喜欢了。

Liferay用什么做的数据库连接?

Liferay底层是使用hibernate,Liferay中的数据库操作均是通过Hibernate来进行的。默认是使用C3PO这个连接池。我们也可以通过在portla-ext.properties、portal-setup-wizard.properties或其他的*.properties文件进行连接池的调整。

portal-setup-wizard.properties

jdbc.default.liferay.pool.provider=c3po #jdbc.default.liferay.pool.provider=dbcp #jdbc.default.liferay.pool.provider=tomcat

默认的配置如上,可以根据情况调整为我们需要的连接池。同时还有许多的关于连接池的配置参数如下(可以在源码的Portal.properties文件中找到)

jdbc.default.acquireIncrement=5 jdbc.default.acquireRetryAttempts=3 jdbc.default.acquireRetryDelay=1000 jdbc.default.connectionCustomizerClassName=com.liferay.portal.dao.jdbc.pool.c3p0.PortalConnectionCustomizer jdbc.default.idleConnectionTestPeriod=60 jdbc.default.maxIdleTime=3600 jdbc.default.maxPoolSize=100 jdbc.default.minPoolSize=10 jdbc.default.numHelperThreads=10 #jdbc.default.transactionIsolation=1
#jdbc.default.defaultTransactionIsolation=READ_UNCOMMITTED jdbc.default.maxActive=100 jdbc.default.minIdle=10 jdbc.default.removeAbandonedTimeout=3600
jdbc.default.jdbcInterceptors=org.apache.tomcat.jdbc.pool.interceptor.ConnectionState jdbc.default.jmxEnabled=true jdbc.default.fairQueue=true jdbc.default.timeBetweenEvictionRunsMillis=30000 jdbc.default.useEquals=false

我们可以根据自己的实际情况进行以上参数的调整与优化。Liferay底层是使用的Hibernate,hibernate的相关配置也是可以使用的,比如我们想让在控制台中打印出执行的SQL语句。只需要配置如下参数:

hibernate.show_sql=true

默认时为false。更多的hibernate默认配置信息,可以在portal.properties里面搜索hibernate.找到。

让Liferay使用中间件的数据源

有时候我们并不想使用JDBC连接池来管理我们的数据库连接,想使用中间件的数据源,比如Tomcat的数据源,Weblogic的数据源。此时我们只需要在portla-ext.properties或portal-setup-wizard.properties中添加如下配置

jdbc.default.jndi.name=jdbc/LiferayPool

这样我们就是让Liferay去中间件的数据源中去寻找数据库连接。当然数据源的JNDI名称必须配置成jdbc/LiferayPool,此时前面的那些JDBC连接的配置就是不需要的了。此时可以删除。

Liferay支持哪些数据库?

有人可能会想,Liferay底层是使用的Hibernate,那是不是Hibernate支持的数据库Liferay都支持呢?理论上应该是这样的,但实际上并非如此,Liferay支持的数据库如下:

DB2、Derby、Hypersonic(HSQL)、Ingres、Mysql、Oracle、P6Spy、PostgreSQL、SQL Server、Sybase等

其他的数据库默认不提供直接支持,只要是Hibernate支持的数据库,如果要让Liferay支持,需要对源码进行一些修改,修改起来并不算复杂。具体的可以参考一下Liferay源码目录下的Portal-impl/src/com/liferay/portal/dao/db下面的面的相关类。

怎么在代码中获取JDBC连接串Connection

有时候可能出于某此原因,我们就是要获取JDBC的连接Connection,怎么办呢?使用普通的JDBC根据配置的参数读取肯定也是可行的,但Liferay已经给我们提供了这样的一个API:

DataAccess.getConnection()。

数据库连接的一些其他信息,如当前的数据库类似等,可以通过DBFactoryUtil.getDB()再获取相关方法来得到。

 

http://www.huqiwen.com/2014/01/15/liferay-6-study-26-about-liferay-database-connection/

转载地址:http://ubtpo.baihongyu.com/

你可能感兴趣的文章
课后作业—阅读笔记
查看>>
简历求职:STAR法则
查看>>
oracle导出数据加密,oracle数据出现愤怒加密算法
查看>>
linux popen获取ip地址,使用popen函数读取命令输出失败
查看>>
python 编辑html文件内容,使用Python解析和编辑HTML文件
查看>>
切换 ip 批处理
查看>>
CommandArgument 绑定多个参数
查看>>
dropdownlist可以多选。类似的例子。。。
查看>>
Objective-C 内存管理
查看>>
Linux下rz,sz与ssh的配合使用
查看>>
pku 1054 The Troublesome Frog 暴力+剪枝
查看>>
串行,并行,并发
查看>>
webservice测试工具
查看>>
Porting .Net RSA xml keys to Java
查看>>
检测 nginx.conf 是否配置正确
查看>>
最长公共子序列|最长公共子串|最长重复子串|最长不重复子串|最长回文子串|最长递增子序列|最大子数组和...
查看>>
测试妹子的呐喊:为什么总是收不到推送?
查看>>
linux NFS
查看>>
Jquery DataTable基本使用
查看>>
leetcode 674. Longest Continuous Increasing Subsequence
查看>>