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

JForum源码学习研究3-持久层

阅读更多

ps: 图片怎么添加到blog 中呀???

 

1:数据库配置
在SystemGlobals.property中会看到这么一块信息:
# Database type to use
database.driver.name = mysql

# Can be net.jforum.SimpleConnection, net.jforum.PooledConnection
# or net.jforum.DataSourceConnection
database.connection.implementation = net.jforum.PooledConnection

# Enable / Disable transactions
database.use.transactions = true

# DataSource name, in case of using net.jforum.core.db.DataSourceConnection
database.datasource.name = java:/MySqlDS

# Time in seconds to healthcheck all database connections
database.ping.delay = 3600

# Extra parameters to pass to C3P0 (only when using PooledConnection)
# Form is key=value;key2=value2;keyN=valueN
c3p0.extra.params = checkoutTimeout=120000;debugUnreturnedConnectionStackTraces=false;unreturnedConnectionTimeout=180


这里配置了驱动类型,Connection的实现类,数据源等信息。
在论坛启动的时候会加载这些数据:
database.driver.config = ${config.dir}/database/${database.driver.name}/${database.driver.name}.properties
sql.queries.driver = ${config.dir}/database/${database.driver.name}/${database.driver.name}.sql
sql.queries.generic = ${config.dir}/database/generic/generic_queries.sql

2:封装数据库连接及连接池

2.1 DBConnection接口

接口方法:
[img][/img]
public static boolean createInstance()
载入并初始化在SystemGlobals.properties中配置的
database.connection.implementation 的值。该值是一个DBConnection实现类。

2.2 DBConnection类层次:

针对数据库中
默认的实现的使用了C3P0连接池的连接。
SimpleConnection不使用连接池,每次使用都需要获取一次数据库连接。
C3P0PooledConnection使用ComboPooledDataSource 数据源来获取连接,数据源的配置信息是通过SystemGlobals.properties和位于/WEB-INF/config/database/{DB_Name}/{DB_Name}.properties来配置。


3: DAO设计


DataAccessDriver会根据配置文件来注入具体的DataAccessDriver实现类。默认是MysqlDataAccessDriver. 那么对应就使用MysqlForumDAO等DAO的实现类。
这是典型的工厂模式,好处很多。

4:DAO中方法的实现
在前面说过,JForum是将所有的查询SQL放到配置文件中。对数据库操作的时候,就将对应的sql语句读取出来。
看GenericForumDAO中的一个方法:
protected int countForumPosts(int forumId)
{ PreparedStatement p = null;
ResultSet rs = null;
try {
p = JForumExecutionContext.getConnection().prepareStatement(
SystemGlobals.getSql("ForumModel.countForumPosts"));
p.setInt(1, forumId);
rs = p.executeQuery();

if (rs.next()) {
return rs.getInt(1);
}

return 0;
}
catch (SQLException e) {
throw new DatabaseException(e);
}
finally {
DbUtils.close(rs, p);
}
}

5:Connection获取及关闭的处理
在上面DAO的方法中,我们看到Connection是通过
JForumExecutionContext来获取的。其实JForumExecutionContext就是通过DBConnection接口获取的。如果已经存在了一个Conneciton,就使用已存在的,没有则新建。
在DAO方法中,我们看到只获取了Connection对象,数据库操作完毕后并没有执行conn.close()操作。
JForum是针对一个线程一个Connection,使用ThreadLocal对象将
JForumExecutionContext对象放入当前执行的线程中。
JForumExecutionContext中有finish()方法是用来处理操作结束时资源的清理,主要就是connection。
查看finish()被调用的地方,我们会发现,在执行完一段代码后会在finally块中执行JForumExecutionContext.finish()来释放数据库连接;

 

 

分享到:
评论

相关推荐

    JForum-2.1.6-src.zip_JForum-2.1.4_JForum-2.1.6-src_ejb_jforum_jf

    在提供的压缩包`JForum-2.1.6-src`中,我们可以看到源代码的完整结构,包括但不限于以下关键部分: - **src**: 包含了所有源代码,按照MVC结构组织,如`model`、`view`和`controller`目录。 - **webapp**: 存放Web...

    jforum 源码

    JForum使用Hibernate作为持久层框架,进行数据库操作。源码中可以学习到如何使用Hibernate的Session和Transaction进行数据增删改查,以及如何通过ORM(对象关系映射)将Java对象与数据库表关联。 4. **安全机制** ...

    开源BBS--JForum 源码

    10. 数据库访问:JForum使用Hibernate作为持久层框架,简化了数据库操作,提高了开发效率。 学习JForum的源码,你不仅可以掌握Java Web开发的基本技巧,还能了解到如何设计一个大型的、可扩展的论坛系统。这对你...

    jforum-2.1.8-src.zip

    《JForum 2.1.8 源码解析与探讨》 JForum,一个知名的开源论坛系统,以其高效、可扩展性和丰富的功能在互联网上广受...总的来说,JForum 2.1.8的源码不仅是一份开源软件的实例,也是广大开发者学习和提高的宝贵资源。

    jforum 2.1.9源码

    《JForum 2.1.9源码深度解析与应用指南》 JForum,作为一款开源的、基于Java的网络论坛系统,深受开发者喜爱。2.1.9版本的发布,不仅提供了稳定的功能,还为开发者们带来了丰富的自定义可能性。本文将深入探讨...

    jforum说明文档 源码解析 单点登录 jforum缓存

    在提供的压缩包中,`Jforum-ppt`可能包含关于Jforum的详细讲解或演示材料,如开发教程、架构解析、功能介绍等。通过阅读这些PPT,你可以更直观地了解Jforum的工作原理和应用场景,对学习和使用Jforum大有裨益。 ...

    JForum-2.1.4.rar_JForum-2.1.4_java 论坛源码_jforum_论坛源码_论坛网站源码

    源码开放意味着你可以深入研究其内部结构,学习优秀的编程实践,或者根据自己的需求进行二次开发。在部署方面,JForum 可以运行在任何支持Java的Web服务器上,如Tomcat、Jetty等,与数据库如MySQL、PostgreSQL等配合...

    jforum-2.1.8-编译代码.zip

    在这个"jforum-2.1.8-编译代码.zip"压缩包中,包含了JForum 2.1.8版本的源代码,对于开发者来说,这是一个深入理解JForum工作原理、进行二次开发或定制化改造的宝贵资源。 首先,让我们了解JForum的基本架构。...

    jforum-2.1.8-src.zip_JForum-2.1.8_The Watch_jforum_jforum 2.1.8-

    Personally think is the best forum for the Java source code, open source, you can watch the official website of the latest developments http://www.jforum.net/

    JForum3 完整项目

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

    jforum3 JAVA论坛源码

    《Jforum3:深入解析JAVA论坛开源代码》 Jforum3是一款基于JAVA语言开发的开源论坛软件...通过理解和学习Jforum3的源码,开发者不仅能掌握论坛系统的构建,还能深入理解JAVA Web应用的开发实践,提升自己的技术水平。

    JForum v2.1.9 源码版

    JForum 是采用Java开发的功能强大且稳定的论坛系统。它提供了抽象的接口、高效的论坛引擎以及易于使用的管理界面,同时具有完全的权限控制、多语言支持(包括中文)、高性能、可自定义的用户接口、安全、支持多...

    jforum3.0可以运行的源码

    jforum3.0从SVN上导出来的时候缺少jar包,经过不断的测试与添加终于能在myeclipse下面运行啦。可是现在的jforum3.0仍然是beat版本的。有许多BUG。如果不介意的话可以下载回去研究一下哦。我上传的东西没有jar包哦,...

    JForum_SSO_-_JForum单点登陆原理与配置

    【JForum SSO原理与配置】 JForum是一款开源的论坛软件,具备强大的功能。在与其他Web应用集成时,为了提供无缝的用户体验,通常需要实现单点登录(SSO,Single Sign On)。SSO允许用户在一个系统登录后,无需再次...

    jforum2论坛源码

    通过研究jforum2源码,可以学习如何实现这些功能,并了解论坛系统的常见架构设计。 4. **性能测试**:JMeter的使用是测试jforum2性能的关键。开发者需要了解如何创建测试计划,定义线程组(模拟用户),设置采样器...

    jforum-2.1.4-src.zip

    文件列表中的“JForum-2.1.4”目录包含了项目的全部源码和配置文件,其中“WEB-INF”目录下存放了Web应用的相关资源,如web.xml配置文件,定义了应用的初始化参数和Servlet映射。"src"目录则是Java源码的存放地,...

    JForum 2.1.9 源码包.zip

    JForum 是采用Java开发的功能强大且稳定的论坛系统。它提供了抽象的接口、高效的论坛引擎以及易于使用的管理界面,同时具有完全的权限控制、多语言支持(包括中文)、高性能、可自定义的用户接口、安全、支持多...

    开源jsp论坛jforum-2.1.9源码带mysql数据库文件

    总之,开源论坛jforum-2.1.9源码提供了丰富的学习资源,无论是对JSP、Servlet、JavaBean技术的实践,还是对MySQL数据库管理的理解,或是对Web应用开发流程的掌握,都具有很高的学习价值。对于希望深入理解Java Web...

    jforum3源代码 数据库

    **JForum3源代码数据库详解** JForum3是一款基于Java的开源论坛系统,它提供了丰富的社区功能,包括用户管理、论坛板块、主题讨论、帖子回复等。本篇将深入探讨JForum3的源代码和其与数据库的交互,以及如何进行...

Global site tag (gtag.js) - Google Analytics