JForum“Support for several popular databases, including MySQL, PostgreSQL,
Oracle and HSQLDB”。
JForum系统中用于持久化的实体类被放在net.jforum.entities包下,例如:User、UserSession、Post等。关于实体类的DAO操作被定义在多个接口中,例如:关于User的DAO操作被定义在net.jforum.dao.UserDAO接口中。针对不同的数据库,有不同的UserDAO实现类。
如上图,GenericUserDAO是JForum的默认实现,对应的数据库是MySQL。GenericUserDAO、HsqldbUserDAO、OracleUserDAO和SqlServerUserDAO类都有public的无参数构造函数。JForum不是根据“配置文件 + if else”的方式决定初始化哪个UserDAO,而是新建了一个抽象类DataAccessDriver。
public abstract class DataAccessDriver
{
private static DataAccessDriver driver;
protected DataAccessDriver() {}
/**
* Starts the engine.
* This method should be called when the system
* is starting.
*
* @param implementation The dao.driver implementation
*/
public static void init(DataAccessDriver implementation)
{
driver = implementation;
}
/**
* Gets a driver implementation instance.
* You MUST use this method when you want a instance
* of a valid <code>DataAccessDriver</code>. Never access
* the driver implementation directly.
*
* @return <code>DataAccessDriver</code> instance
*/
public static DataAccessDriver getInstance()
{
return driver;
}
public abstract ForumDAO newForumDAO();
public abstract GroupDAO newGroupDAO();
public abstract PostDAO newPostDAO();
public abstract PollDAO newPollDAO();
public abstract RankingDAO newRankingDAO();
public abstract TopicDAO newTopicDAO();
public abstract UserDAO newUserDAO();
public abstract CategoryDAO newCategoryDAO();
public abstract TreeGroupDAO newTreeGroupDAO();
public abstract SmilieDAO newSmilieDAO();
public abstract GroupSecurityDAO newGroupSecurityDAO();
public abstract PrivateMessageDAO newPrivateMessageDAO();
public abstract UserSessionDAO newUserSessionDAO();
public abstract ConfigDAO newConfigDAO();
public abstract KarmaDAO newKarmaDAO();
public abstract BookmarkDAO newBookmarkDAO();
public abstract AttachmentDAO newAttachmentDAO();
public abstract ModerationDAO newModerationDAO();
public abstract BannerDAO newBannerDAO();
public abstract SummaryDAO newSummaryDAO();
public abstract MailIntegrationDAO newMailIntegrationDAO();
public abstract ApiDAO newApiDAO();
public abstract BanlistDAO newBanlistDAO();
public abstract ModerationLogDAO newModerationLogDAO();
public abstract LuceneDAO newLuceneDAO();
}
init()方法仅在系统启动时被调用一次。JForum系统中有多处使用此类init(),有一点反向注入的味道。
系统启动时,初始化DataAccessDriver:
public static void loadDaoImplementation()
{
// Start the dao.driver implementation
String driver = SystemGlobals.getValue(ConfigKeys.DAO_DRIVER);
logger.info("Loading JDBC driver " + driver);
try {
Class c = Class.forName(driver);
DataAccessDriver d = (DataAccessDriver)c.newInstance();
DataAccessDriver.init(d);
}
catch (Exception e) {
throw new ForumException(e);
}
}
如果是MySQL,String driver值为:net.jforum.dao.mysql.MysqlDataAccessDriver
分享到:
相关推荐
通过研究JForum3的源代码,开发者不仅可以学习到Java Web开发的最佳实践,还能掌握如何构建一个健壮、易扩展的社区平台。无论是对Java框架的深入理解,还是对Web应用开发流程的整体把握,JForum3都是一份宝贵的教育...
此外,JForum还使用了JDBC(Java Database Connectivity)进行数据库操作,支持多种数据库平台,如MySQL、Oracle等,具有很好的数据库兼容性。 源代码中,`rafaelsteil-jforum2-190d28b`很可能代表的是项目的一个...
2. **Database**:JForum支持多种数据库,如MySQL、PostgreSQL等,其数据库访问层位于`com.jforum.db`目录下,采用DAO(Data Access Object)模式实现。 3. **Web**:Web模块主要负责处理HTTP请求,`...
此外,JForum还支持多种国际化和本地化,其源代码中会有针对不同语言的资源文件,如`lang`目录下的`.properties`文件。这使得JForum能够适应全球不同地区的用户需求。 总的来说,JForum 2.1.8的源代码是一个深入...
1. **多语言支持**:JForum支持多种语言,方便不同地区的用户参与讨论,提供良好的用户体验。 2. **高效性能**:基于Java平台,JForum具备出色的性能和稳定性,能够处理高并发访问。 3. **模板引擎**:内置的模板...
总结来说,JForum3是一个成熟的Java论坛解决方案,它的完整源代码对于Java Web开发者来说是一个宝贵的资源,无论是用于学习、研究还是定制自己的论坛系统,都能从中受益匪浅。通过深入了解JForum3的架构和实现,...
1. 下载JForum安装包:在JForum的官方网站或者其他可靠的源获取最新版本的JForum源代码包,确保与你的操作系统兼容。 2. 解压安装包:将下载的压缩文件解压到你选择的工作目录,通常推荐一个非系统目录,如`C:\Java...
作为开源项目,JForum允许开发者查看和修改源代码,根据需求进行定制化开发。此外,其丰富的API接口和插件机制,使得用户可以轻松地添加新的功能或集成其他服务。 总之,JForum论坛系统通过结合JSP和MySQL的强大...
总的来说,Jforum3是一款强大的JAVA论坛解决方案,它的开源性质鼓励了社区的参与和创新,丰富的开发工具和数据库支持确保了项目的高效开发和运行。通过理解和学习Jforum3的源码,开发者不仅能掌握论坛系统的构建,还...
在这个《jforum-2.1.4-src.zip》压缩包中,包含了JForum 2.1.4版本的完整源代码,为开发者提供了深入理解其内部机制的宝贵机会。本文将围绕JForum的核心特性、数据库支持以及源码分析进行深入探讨。 首先,JForum...
【标题】"基于Java的实例源码-论坛系统 JForum....通过研究JForum的源代码,开发者不仅能提升Java Web开发技能,还能了解到一个成熟的开源项目的组织结构、开发实践和最佳实践,这对于个人和团队的项目开发都大有裨益。
在压缩包"rafaelsteil-jforum3-f4814b8"中,包含了JForum的源代码和相关资源文件,这使得用户和开发者可以深入研究其内部工作原理,进行二次开发或者定制化需求。对于想要学习Java Web开发或者熟悉论坛系统架构的人...
在这款开源软件中,开发者可以自由地查看和修改源代码,以适应自身特定的论坛环境。 **1. JForum的核心特性** - **多语言支持**:JForum支持多种语言,方便全球用户参与讨论。 - **模板系统**:通过灵活的模板引擎...
**基于Java的论坛系统 JForum** JForum是一款开源的、基于Java技术的网络论坛系统,...通过学习和研究JForum的源代码,开发者可以提升对Java Web开发的理解,特别是对MVC模式、数据库交互、用户认证等方面的技术应用。
由于JForum是开放源代码的,开发者可以根据自己的需求对其进行深度定制。可能的修改包括: 1. **功能扩展**:添加新的模块或改进现有功能,如增强私信系统、实现邮件通知等。 2. **界面调整**:修改CSS样式,实现...
JForum是一款基于Java技术开发的开源论坛系统,...通过分析和修改JForum的源代码,学生可以深入理解Web应用的开发流程,掌握用户认证、权限控制、数据持久化等核心概念,对提升编程技能和理解Web系统架构有极大的帮助。
JForum是一个开源的、基于Java技术的论坛系统,它使用了包括Servlet、JSP、JavaBean和JDBC在内的多种Java技术。序列图在这个项目中可能用来描绘用户发帖、回复、浏览等操作的流程,以及各组件间的交互。 4. **...
数据库支持 JForum需要与数据库进行交互,存储用户信息、帖子、分类等数据。它可能支持多种关系型数据库,如MySQL、PostgreSQL或Oracle,通过JDBC(Java Database Connectivity)接口进行数据访问。 ### 4. 用户...
Sakai,源自于2004年由美国的顶尖学府如印第安纳大学、密歇根大学、斯坦福大学、麻省理工学院及伯克利大学联合发起的开放源代码课程管理系统(CMS)开发计划。其目标明确而远大——打造一款能够替代现有商业课程管理...