Liferay 6开发学习(二十六):数据库连接相关问题
Liferay中怎么更换数据库?
常碰到有人问Liferay怎么更换数据库,怎么修改数据库连接。在我们第一次启动Liferay的时候,会有一个配置向导,在此配置向导我们可以选择数据库,并配置数据库连接信息。如果我现在在向导里面选择了PostgreSQL数据库,但是我后面想要变更为Oracle怎么办呢?
在执行完配置向导后会在Liferay的目录下面生成一个文件portal-setup-wizard.properties。我们打开此文件,可以在里面看到如下的数据库连接信息。
jdbc.default.driverClassName=org.postgresql.Driver
jdbc.default.url=jdbc:postgresql://localhost:5432/liferay62
jdbc.default.username=postgres
jdbc.default.password=postgres
这几行我们一看就知道是数据库的连接信息了,配置的为JDBC连接的驱动名称、JDBC连接串、数据库的用户名、数据库的密码等几个信息,我们需要要更换数据库,在这里将数据库修改为我们想要的即可。
为什么看到有些教程或文章说是在ROOT/WEB-INF/classes/portal-ext.properties文件里面修改呢?请先参看《Liferay中Portal.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/
Liferay 6开发学习(二十六):数据库连接相关问题的更多相关文章
- Java开发学习(二十六)----SpringMVC返回响应结果
SpringMVC接收到请求和数据后,进行了一些处理,当然这个处理可以是转发给Service,Service层再调用Dao层完成的,不管怎样,处理完以后,都需要将结果告知给用户. 比如:根据用户ID查 ...
- Java开发学习(三十六)----SpringBoot三种配置文件解析
一. 配置文件格式 我们现在启动服务器默认的端口号是 8080,访问路径可以书写为 http://localhost:8080/books/1 在线上环境我们还是希望将端口号改为 80,这样在访问的时 ...
- Java开发学习(二十二)----Spring事务属性、事务传播行为
一.事务配置 上面这些属性都可以在@Transactional注解的参数上进行设置. readOnly:true只读事务,false读写事务,增删改要设为false,查询设为true. timeout ...
- Java开发学习(二十四)----SpringMVC设置请求映射路径
一.环境准备 创建一个Web的Maven项目 参考Java开发学习(二十三)----SpringMVC入门案例.工作流程解析及设置bean加载控制中环境准备 pom.xml添加Spring依赖 < ...
- Java开发学习(二十五)----使用PostMan完成不同类型参数传递
一.请求参数 请求路径设置好后,只要确保页面发送请求地址和后台Controller类中配置的路径一致,就可以接收到前端的请求,接收到请求后,如何接收页面传递的参数? 关于请求参数的传递与接收是和请求方 ...
- Java开发学习(二十八)----拦截器(Interceptor)详细解析
一.拦截器概念 讲解拦截器的概念之前,我们先看一张图: (1)浏览器发送一个请求会先到Tomcat的web服务器 (2)Tomcat服务器接收到请求以后,会去判断请求的是静态资源还是动态资源 (3)如 ...
- java web学习总结(十六) -------------------数据库连接池
一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大 ...
- 网站开发进阶(二十六)js刷新页面方法大全
js刷新页面方法大全 在项目开发过程中,需要实现刷新页面.经过学习,发现下面这条语句就可以轻松实现. location.reload(); // 刷新页面 有关刷新页面的其它方法,具体学习内容如下,有 ...
- JavaWeb学习 (二十六)————监听器(Listener)学习(二)
一.监听域对象中属性的变更的监听器 域对象中属性的变更的事件监听器就是用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信 ...
- ElasticSearch7.3学习(二十六)----搜索(Search)参数总结、结果跳跃(bouncing results)问题解析
1.preference 首先引入一个bouncing results问题,两个document排序,field值相同:不同的shard上,可能排序不同:每次请求轮询打到不同的replica shar ...
随机推荐
- 最大化 AIX 上的 Java 性能,第 1 部分: 基础
http://www.ibm.com/developerworks/cn/aix/library/es-Javaperf/es-Javaperf1.html 最大化 AIX 上的 Java 性能,第 ...
- 在Windows 10上安装Oracle 11g数据库出现的问题及解决
在Windows 10上安装Oracle 11g数据库,并且很多次出现过:当安装的进度条进行到快要结束的时候弹出一个提示框.如下: [Java(TM)2 Platform Standard Editi ...
- 【转】JavaScript实际应用:父子页面交互
转自:http://blog.csdn.net/xinyueyuli/article/details/509893 最近项目开发中需要子窗口和父窗口交互的内容,基本上无非就是把子窗口的信息传递给父窗口 ...
- ASP.NET MVC几种找不到资源的问题解决办法
转自:http://www.cnblogs.com/xyang/archive/2011/11/24/2262003.html 在MVC中,controller中的Action和View中的.csht ...
- libreoffice转office文档为pdf文档
libreoffice5.0 --invisible --convert-to pdf:writer_pdf_Export --outdir "/root/" "bb. ...
- 详解Android首选项框架ListPreference
详解Android首选项框架ListPreference 原文地址 探索首选项框架 在深入探讨Android的首选项框架之前,首先构想一个需要使用首选项的场景,然后分析如何实现这一场景.假设你正在编写 ...
- git tag知多少
这个命令,其实很有用,类似clearcase中的label,就是给一个版本设置一个标记(标签),方便后期查找特定的版本. tag和commit的sha1那串字符串的关系,不是很大,但是还是要说一下的. ...
- scala vs java 相同点和差异
本贴是我摘抄自国外网站,用作备忘,也作为分享! Similarities between Scala and Java Following are some of the major similari ...
- 面向对象设计模式--观察者模式(Observer)
要点: 1.如何使用观察者模式: 对应使用这个模式的用户(main)来说,subject和observer这两个基类是不被关系的,在调用者(main)中只是有concreteSubject和concr ...
- [转] matlab saveas 和imwrite的区别
http://hi.baidu.com/curbzz/item/04a69e805fc334e3e596e035 saveas(handle,['目录','文件名']) 如果只有一幅图,handle设 ...