`
zhjb2000
  • 浏览: 58344 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Liferay学习历程二:搭建二次开发环境

阅读更多

上一篇写了Liferay源代码的编译和二次开发环境的生成(ext工程),下面将介绍在二次开发环境上搭建自己的开发框架.

用Eclipse打开编译Liferay源代码生成的ext扩展开发环境,如下图

主要介绍ext-ejb和ext-web两个目录,利用Liferay的ant工具可以自动生成一套对于数据库表CURD的处理类,但是为符合自己的开发习惯,我在ext环境上搭建了自己的开发框架,主要包括两大块,第一是Hibernate数据访问层的封装,二是Struts的集成,集成了DispatchAction的多方法的功能.

下面介绍如何对Hibernate数据访问层进行封装ext-ejb/classes/META-INF 目录下面的ext-hbm.xml是Hibernate映射文件,ext-spring-professional.xml是Spring配置文件,对于ext-hbm.xml文件就不做解释了下面是Hibernate数据访问层的Spring的配置代码

<beanid="cn.pisoft.portlet.hibernate.HibernateService.professional"class="cn.pisoft.portlet.hibernate.impl.HibernateServiceImpl"lazy-init="true"/>
<beanid="cn.pisoft.portlet.hibernate.HibernateService.transaction"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"lazy-init="true">
<propertyname="transactionManager">
<refbean="liferayTransactionManager"/>
</property>
<propertyname="target">
<refbean="cn.pisoft.portlet.hibernate.HibernateService.professional"/>
</property>
<propertyname="transactionAttributes">
<props>
<propkey="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<beanid="cn.pisoft.portlet.hibernate.factory.HibernateServiceFactory"class="cn.pisoft.portlet.hibernate.factory.HibernateServiceFactory"lazy-init="true">
<propertyname="service">
<refbean="cn.pisoft.portlet.hibernate.HibernateService.transaction"/>
</property>
</bean>

<beanid="cn.pisoft.portlet.hibernate.impl.HibernateDaoImpl"class="cn.pisoft.portlet.hibernate.impl.HibernateDaoImpl"lazy-init="true">
<propertyname="dataSource">
<refbean="liferayDataSource"/>
</property>
<propertyname="sessionFactory">
<refbean="liferaySessionFactory"/>
</property>
</bean>
<beanid="cn.pisoft.portlet.hibernate.util.HibernateDaoUtil"class="cn.pisoft.portlet.hibernate.util.HibernateDaoUtil"lazy-init="true">
<propertyname="dao">
<refbean="cn.pisoft.portlet.hibernate.impl.HibernateDaoImpl"/>
</property>
</bean>

下面是相关的JAVA类和接口

HibernateDao.java 接口

packagecn.pisoft.portlet.hibernate;

importjava.io.Serializable;
importjava.util.List;

importcn.pisoft.portlet.common.Pager;




/***//**
*<p>Title:</p>
*
*<p>Description:</p>
*
*<p>Copyright:Copyright(c)2007</p>
*
*<p>Company:</p>
*
*<p>Author:一个人的日子</p>
*
*<p>Email:zhjb2000@hotmail.com</p>
*
*<p>Version:1.0</p>
*
*<p>Create2007-7-29</p>
*
*/


publicinterfaceHibernateDao...{

publicvoidsave(Objectpo)throwsException;

publicListquery(Stringhql)throwsException;

publicObjectget(Classclas,Serializableid)throwsException;

publicvoidupdate(Objectpo)throwsException;

publicvoiddelete(Objectpo)throwsException;

publicPagerqueryByPage(Stringhql,inttotalElements,intpageNumber,intpageSize)throwsException;

publicPagerqueryByPage(Stringhql,intpageNumber,intpageSize)throwsException;

publicvoidexecuteSql(Stringsql)throwsException;

publicintgetCountByExecuteSql(Stringsql)throwsException;

publicListgetTopN(Stringhql,intn)throwsException;

publicListgetListByExecuteSql(Stringsq,StringcolumnNamel)throwsException;
publicListgetListByExecuteSql(Stringsq,intfetchNubmer)throwsException;
}

HibernateDaoImpl.java 上面接口的实现类


packagecn.pisoft.portlet.hibernate.impl;

importjava.io.Serializable;
importjava.sql.Connection;
importjava.sql.ResultSet;
importjava.sql.Statement;
importjava.util.ArrayList;
importjava.util.List;

importorg.hibernate.Query;
importorg.hibernate.Session;

importcn.pisoft.portlet.common.Pager;
importcn.pisoft.portlet.hibernate.HibernateDao;

importcom.liferay.portal.service.persistence.BasePersistence;


/***//**
*<p>Title:</p>
*
*<p>Description:</p>
*
*<p>Copyright:Copyright(c)2007</p>
*
*<p>Company:</p>
*
*<p>Author:一个人的日子</p>
*
*<p>Email:zhjb2000@hotmail.com</p>
*
*<p>Version:1.0</p>
*
*<p>Create2007-7-29</p>
*
*/


publicclassHibernateDaoImplextendsBasePersistenceimplementsHibernateDao...{

publicListquery(Stringhql)throwsException...{
Listlist
=null;
Sessionsession
=null;
session
=this.openSession();
list
=session.createQuery(hql).list();
this.closeSession(session);
returnlist;
}


publicvoidsave(Objectpo)throwsException...{
Sessionsession
=null;
session
=this.openSession();
session.save(po);
this.closeSession(session);
}


publicObjectget(Classclas,Serializableid)throwsException...{
Sessionsession
=null;
session
=this.openSession();
Objecto
=session.get(clas,id);
this.closeSession(session);
returno;
}


publicvoidupdate(Objectpo)throwsException...{
Sessionsession
=null;
session
=this.openSession();
session.update(po);
this.closeSession(session);
}


publicvoiddelete(Objectpo)throwsException...{
Sessionsession
=null;
session
=this.openSession();
session.delete(po);
this.closeSession(session);

}


publicPagerqueryByPage(Stringhql,inttotalElements,intpageNumber,intpageSize)throwsException...{
Sessionsession
=null;
session
=this.openSession();
Pagerpage
=newPager();
page.setPageNumber(pageNumber);
page.setPageSize(pageSize);
page.setTotalElements(totalElements);
Listlist
=null;
Queryquery
=session.createQuery(hql);
query.setFirstResult((pageNumber
-1)*pageSize);
query.setMaxResults(pageSize);
list
=query.list();
page.setElements(list);
this.closeSession(session);
returnpage;
}

publicPagerqueryByPage(Stringhql,intpageNumber,intpageSize)throwsException...{
Sessionsession
=null;
session
=this.openSession();
Pagerpage
=newPager();
page.setPageNumber(pageNumber);
page.setPageSize(pageSize);
inttotalElements=0;
StringstaticSql
=hql.trim();
if(staticSql.startsWith("select")||staticSql.startsWith("SELECT"))...{
intfromIndex=staticSql.indexOf("from");
intFROMIndex=staticSql.indexOf("FROM");
if(FROMIndex!=-1&&fromIndex>FROMIndex)...{
fromIndex
=FROMIndex;
}

if(fromIndex==-1)...{
fromIndex
=0;
}

staticSql
=staticSql.substring(fromIndex);
}

intorderByIndex=staticSql.indexOf("orderby");
if(orderByIndex!=-1)...{
staticSql
=staticSql.substring(0,orderByIndex);
}


Queryquery
=session.createQuery("selectcount(*)"+staticSql);
Listlist
=query.list();
if(list!=null&&list.get(0)!=null)...{
totalElements
=((Long)list.get(0)).intValue();
}

page.setTotalElements(totalElements);
query
=session.createQuery(hql);
query.setFirstResult((pageNumber
-1)*pageSize);
query.setMaxResults(pageSize);
list
=query.list();
page.setElements(list);
this.closeSession(session);
returnpage;
}


publicvoidexecuteSql(Stringsql)throwsException...{
Sessionsession
=null;
alig
分享到:
评论

相关推荐

    Liferay 5.2.3 二次开发环境搭建

    本篇文章将详细讲解如何在基于Myeclipse 6和Tomcat 6.0.24的环境中搭建Liferay 5.2.3的二次开发环境。 **一、环境准备** 在开始Liferay的开发工作之前,我们需要准备好以下软件: 1. **Myeclipse 6**: 这是一个...

    Liferay 6.2 开发环境搭建

    Liferay 6.2 开发环境搭建.doc,包括Liferay SDK下载及搭建过程等!

    liferay6.1.2开发环境的搭建

    Liferay 6.1.2 开发环境的搭建 Liferay 是一个开源的企业portal平台,提供了丰富的功能和插件,帮助开发者快速构建企业门户网站。为了搭建 Liferay 6.1.2 开发环境,我们需要安装 JDK、Liferay Portal、Tomcat、Ant...

    Liferay_Portal6.0开发环境搭建

    **Liferay Portal 6.0 开发环境搭建详解** Liferay Portal是一款强大的开源企业门户解决方案,深受全球开发者和企业的喜爱。它基于先进的Java技术和Web 2.0特性,支持多种应用服务器、servlet容器、数据库以及操作...

    liferay6.1,Eclipse3.6开发环境搭建

    ### Liferay 6.1与Eclipse 3.6开发环境搭建详解 #### 一、前言 在软件开发领域,构建一个高效稳定的开发环境至关重要。对于基于Liferay平台的应用开发来说,选择合适的集成开发环境(IDE)是提高开发效率的关键之一...

    搭建liferay portal的开发环境.doc

    搭建Liferay Portal的开发环境是一项细致且复杂的过程,涉及到多个步骤和组件的配合。本文将根据给定的文件信息,详细解析如何从零开始构建一个完整的Liferay开发环境,包括必要的准备、具体步骤以及关键配置。 ###...

    liferay环境的搭建

    本文档旨在详细介绍如何利用Eclipse集成开发环境(IDE)来搭建Liferay开发环境,并创建portlet项目。通过本指南,您将能够成功安装必要的软件并配置开发环境。 #### 二、所需资源 为了搭建Liferay开发环境,您需要...

    Liferay 5.2.3 开发环境环境搭建.doc

    【Liferay 5.2.3 开发环境搭建】 Liferay 是一款强大的开源门户平台,基于J2EE架构,融合了EJB、JMS等多种技术。它的前端使用Struts MVC框架,通过XML配置文件实现portlet的动态扩展。此外,Liferay还集成了Web服务...

    liferay开发环境搭建

    本教程将详细解释如何在Windows环境下搭建Liferay的开发环境,以进行二次开发。 首先,我们需要准备以下文件: 1. JDK (Java Development Kit) - 用于编译和运行Java代码。 2. Ant - 一个自动化构建工具,Liferay的...

    7z压缩,三合一-LifeRay-开发参考手册&二次开发指南&4.3中文开发指南

    2. **LifeRay二次开发指南**:二次开发指南是针对已经熟悉LifeRay基础的开发者,它可能会详细讲解如何基于LifeRay的开放源代码进行定制化开发,包括创建自定义主题、布局、portlet、服务等,以及如何利用LifeRay的...

    Liferay_5.2.3_开发环境环境搭建

    本文将详细介绍如何搭建Liferay 5.2.3的开发环境。 1. **关于Liferay 5.2.3** Liferay 5.2.3是Liferay Portal的一个较早版本,发布于2009年。尽管现在已经有了更先进的版本,但5.2.3仍然被一些企业使用,因为它...

    MyEclipse8+Liferay 开发环境搭建

    ### MyEclipse 8 + Liferay 开发环境...通过上述步骤,开发者可以在 MyEclipse 8 环境下成功搭建 Liferay 的开发环境,并进行高效的二次开发工作。这不仅提高了开发效率,也为构建复杂的企业级应用提供了坚实的基础。

    Liferay_5.2.3_环境搭建

    【Liferay 5.2.3 环境搭建】是指在本地计算机上配置和安装Liferay Portal 5.2.3版本的过程。Liferay是一个全面的门户平台,基于Java Enterprise Edition (J2EE) 技术构建,利用EJB(Enterprise JavaBeans)和JMS...

    Liferay配置二次开发环境——Eclipse

    【标题】"Liferay配置二次开发环境——Eclipse"涉及的知识点主要集中在Liferay门户平台的开发环境搭建,特别是如何在Eclipse集成开发环境中进行配置。Liferay是一款开源的企业级内容管理和数字体验平台,它提供了...

    Liferay Portal 二次开发指南

    ### Liferay Portal 二次开发指南 #### 一、Liferay Portal 架构解析 ##### 1.1 Portal规范 Liferay Portal遵循了两种主要的门户规范:JSR 168 和 WSRP (Web Services for Remote Portlets)。JSR 168是一个Java...

    MyEclipse8+Liferay开发环境搭建

    MyEclipse8+Liferay开发环境搭建

    liferay开发小记---开发环境的搭建

    本文将详述“liferay开发小记——开发环境的搭建”这一主题,旨在帮助开发者们快速有效地设置自己的开发环境,从而顺利进行Liferay插件或portlet的开发。 首先,我们需要了解Liferay开发的基础。Liferay提供了多种...

    liferay6.1Eclipse3.6开发环境搭建

    ### Liferay 6.1与Eclipse 3.6开发环境搭建详解 #### 一、前言 在软件开发领域,构建一个高效稳定的开发环境至关重要。对于基于Liferay平台进行开发的团队而言,确保开发环境的顺利搭建是项目成功的关键之一。本文...

Global site tag (gtag.js) - Google Analytics