`
jinjiankang
  • 浏览: 113397 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JForum源代码研究—支持多种数据库

阅读更多

 

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源代码

    通过研究JForum3的源代码,开发者不仅可以学习到Java Web开发的最佳实践,还能掌握如何构建一个健壮、易扩展的社区平台。无论是对Java框架的深入理解,还是对Web应用开发流程的整体把握,JForum3都是一份宝贵的教育...

    jforum开源论坛 官方源代码(2.1.9)

    此外,JForum还使用了JDBC(Java Database Connectivity)进行数据库操作,支持多种数据库平台,如MySQL、Oracle等,具有很好的数据库兼容性。 源代码中,`rafaelsteil-jforum2-190d28b`很可能代表的是项目的一个...

    jforum 2.1.9源码

    2. **Database**:JForum支持多种数据库,如MySQL、PostgreSQL等,其数据库访问层位于`com.jforum.db`目录下,采用DAO(Data Access Object)模式实现。 3. **Web**:Web模块主要负责处理HTTP请求,`...

    jforum-2.1.8-编译代码.zip

    此外,JForum还支持多种国际化和本地化,其源代码中会有针对不同语言的资源文件,如`lang`目录下的`.properties`文件。这使得JForum能够适应全球不同地区的用户需求。 总的来说,JForum 2.1.8的源代码是一个深入...

    jforum2.1.8

    1. **多语言支持**:JForum支持多种语言,方便不同地区的用户参与讨论,提供良好的用户体验。 2. **高效性能**:基于Java平台,JForum具备出色的性能和稳定性,能够处理高并发访问。 3. **模板引擎**:内置的模板...

    JForum3 完整项目

    总结来说,JForum3是一个成熟的Java论坛解决方案,它的完整源代码对于Java Web开发者来说是一个宝贵的资源,无论是用于学习、研究还是定制自己的论坛系统,都能从中受益匪浅。通过深入了解JForum3的架构和实现,...

    jforum安装(性能测试环境搭建)

    1. 下载JForum安装包:在JForum的官方网站或者其他可靠的源获取最新版本的JForum源代码包,确保与你的操作系统兼容。 2. 解压安装包:将下载的压缩文件解压到你选择的工作目录,通常推荐一个非系统目录,如`C:\Java...

    JForum论坛系统

    作为开源项目,JForum允许开发者查看和修改源代码,根据需求进行定制化开发。此外,其丰富的API接口和插件机制,使得用户可以轻松地添加新的功能或集成其他服务。 总之,JForum论坛系统通过结合JSP和MySQL的强大...

    jforum3 JAVA论坛源码

    总的来说,Jforum3是一款强大的JAVA论坛解决方案,它的开源性质鼓励了社区的参与和创新,丰富的开发工具和数据库支持确保了项目的高效开发和运行。通过理解和学习Jforum3的源码,开发者不仅能掌握论坛系统的构建,还...

    jforum-2.1.4-src.zip

    在这个《jforum-2.1.4-src.zip》压缩包中,包含了JForum 2.1.4版本的完整源代码,为开发者提供了深入理解其内部机制的宝贵机会。本文将围绕JForum的核心特性、数据库支持以及源码分析进行深入探讨。 首先,JForum...

    基于Java的实例源码-论坛系统 JForum.zip

    【标题】"基于Java的实例源码-论坛系统 JForum....通过研究JForum的源代码,开发者不仅能提升Java Web开发技能,还能了解到一个成熟的开源项目的组织结构、开发实践和最佳实践,这对于个人和团队的项目开发都大有裨益。

    基于java的论坛系统 JForum.zip

    在压缩包"rafaelsteil-jforum3-f4814b8"中,包含了JForum的源代码和相关资源文件,这使得用户和开发者可以深入研究其内部工作原理,进行二次开发或者定制化需求。对于想要学习Java Web开发或者熟悉论坛系统架构的人...

    [论坛社区]JForum开源论坛 2.1.6_jforum216.rar

    在这款开源软件中,开发者可以自由地查看和修改源代码,以适应自身特定的论坛环境。 **1. JForum的核心特性** - **多语言支持**:JForum支持多种语言,方便全球用户参与讨论。 - **模板系统**:通过灵活的模板引擎...

    基于Java的论坛系统 JForum.zip

    **基于Java的论坛系统 JForum** JForum是一款开源的、基于Java技术的网络论坛系统,...通过学习和研究JForum的源代码,开发者可以提升对Java Web开发的理解,特别是对MVC模式、数据库交互、用户认证等方面的技术应用。

    java源码论坛-jforum:著名的Java开放源代码论坛项目,但已针对其他目的进行了自定义和大量修改

    由于JForum是开放源代码的,开发者可以根据自己的需求对其进行深度定制。可能的修改包括: 1. **功能扩展**:添加新的模块或改进现有功能,如增强私信系统、实现邮件通知等。 2. **界面调整**:修改CSS样式,实现...

    [论坛社区]JForum开源论坛 2.1.6_jforum216(毕设 + 课设).zip

    JForum是一款基于Java技术开发的开源论坛系统,...通过分析和修改JForum的源代码,学生可以深入理解Web应用的开发流程,掌握用户认证、权限控制、数据持久化等核心概念,对提升编程技能和理解Web系统架构有极大的帮助。

    jform 序列图,源代码

    JForum是一个开源的、基于Java技术的论坛系统,它使用了包括Servlet、JSP、JavaBean和JDBC在内的多种Java技术。序列图在这个项目中可能用来描绘用户发帖、回复、浏览等操作的流程,以及各组件间的交互。 4. **...

    Java论坛系统 JForum

    数据库支持 JForum需要与数据库进行交互,存储用户信息、帖子、分类等数据。它可能支持多种关系型数据库,如MySQL、PostgreSQL或Oracle,通过JDBC(Java Database Connectivity)接口进行数据访问。 ### 4. 用户...

    使用Sakai构建开放式教学平台(完整版)

    Sakai,源自于2004年由美国的顶尖学府如印第安纳大学、密歇根大学、斯坦福大学、麻省理工学院及伯克利大学联合发起的开放源代码课程管理系统(CMS)开发计划。其目标明确而远大——打造一款能够替代现有商业课程管理...

Global site tag (gtag.js) - Google Analytics