EasyDBO是通过配置文件来配置相关数据源等,只有为EasyDBO提供正确的配置信息。EasyDBO才能正常工作,EasyDBO的配置信息写在easyjf-dbo.XML文件中,其发布到Web应用程序中的时候处于web-infclasses目录下面。只有存放位置正确、内容正确的easyjf-dbo.xml配置信息,才能体验EasyDBO简易、实用的对象关系映射系统(ORM)功能。
一、easyjf-dbo.xml文件的内容
首先我们看一下EasyDBO_0.4.1版本中的一个完整的配置文件,下面是EasyDBO_0.4.1源码中的easyjf-dbo.xml文件的全部内容,我们的测试数据库为本机(即127.0.0.1或localhost)的数据库,数据库名为easyjf,密码为easyjf,用户名为root。
easyjf-dbo.xml文件的全部内容:
<?xml version="1.0" encoding="utf-8"?>
<easyjf-dbo>
<datasource name="bbs" type="org.apache.commons.dbcp.BasicDataSource">
<!--Ms SqlServer -->
<property name="easydbo.connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
<property name="easydbo.connection.passWord">easyjf</property>
<property name="easydbo.connection.url">jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=easyjf;SelectMethod=cursor</property>
<property name="easydbo.connection.username">root</property>
<property name="easydbo.dialect">com.easyjf.dbo.sql.MSSQLServerQuery</property>
<!-- mysql-->
<!--
<property name="easydbo.connection.driver_class">org.gjt.mm.mysql.Driver</property>
<property name="easydbo.connection.password">easyjf</property>
<property name="easydbo.connection.url">jdbc:mysql://127.0.0.1:3306/easyjf</property>
<property name="easydbo.connection.username">root</property>
<property name="easydbo.dialect">com.easyjf.dbo.sql.MySqlQuery</property>
-->
<!--通过jdbc-odbc网桥连接-->
<!--sun.jdbc.odbc.JdbcOdbcDriver-->
<!-- jdbc:odbc:Driver=={Microsoft Access Driver (*.mdb)};DBQ=access\dbaccess.mdb-->
<!--jdbc:odbc:DriverName-->
<property name="easydbo.optimize">true</property>
<property name="esyydbo.show_sql">true</property>
</datasource>
<tables>
<class name="com.easyjf.dbo.example.TestMessage" table="Message" schema="dbo" catalog="test">
<id name="cid" type="string">
<column name="cid" length="16" not-null="true" />
<generator class="com.easyjf.dbo.RandomIdGenerator" />
</id>
<property name="title" type="string">
<column name="title" length="50" not-null="true" />
</property>
<property name="content1" type="string">
<column name="content" />
</property>
<property name="status" type="integer">
<column name="status" length="" />
</property>
<property name="inputUser" type="string">
<column name="inputUser" length="23" />
</property>
<property name="inputTime" type="date">
<column name="inputTime" length="8" />
</property>
</class>
</tables>
<cache name="EasyDBO" storePolicy="LRU" maxElements="1000" eXPiredInterval="1000" type="com.easyjf.cache.EasyCache" />
</easyjf-dbo>
二、EasyDBO中数据源的配置说明
接下来,我们重点看看有关数据源datasource的说明。
数据源是EasyDBO执行数据库操作的时候,必须使用到的JDBC数据源。
<datasource name="bbs" type="org.apache.commons.dbcp.BasicDataSource">
EasyDBO考虑到项目中有时候需要连接几个不同的数据库的情况,因此一个数据库定义为一个datasource,每一个datasource有一个名字name,同时有一个表示数据源类型的type,默认的情况下都是使用的第一个datasource作为缺省数据源。而使用apache的数据库连接池dbcp.BasicDataSource作为默认连接池。
这一行在我们当前提供的所有示例中都可以不用修改。
下面来看datasource中的各property节点的配置说明:
<property name="easydbo.connection.driver_class">表示JDBC数据库驱动类,com.microsoft.jdbc.sqlserver.SQLServerDriver或者net.sourceforge.jtds.jdbc.Driver,而My SQL的驱动为:org.gjt.mm.mysql.Driver。
<property name="easydbo.connection.url">表示数据源的具体的访问地址,每一种驱动对应的写法不同,请参照相应的预支说明。如MS SQL的jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=easyjf;SelectMethod=cursor,或者用jtds作驱动的时候jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=easyjf;SelectMethod=cursor,My SQL对应的URL写法为:jdbc:mysql://127.0.0.1:3306/easyjf
<property name="easydbo.connection.username">节点表示数据库的访问用户名
<property name="easydbo.connection.password">节点表示数据库访问密码
上面四个属性都是jdbc连接数据库共同所需的,由各个驱动程序共同规范的。
<property name="easydbo.dialect">节点表示EasyDBO的数据库方言,这个是EasyDBO专用的。当前提供的三种方言,可以支持4种数据库类型。其中com.easyjf.dbo.sql.MSSqlServerQuery为MS SQL及Access皆可使用;而com.easyjf.dbo.sql.MySqlQuery适合My SQL使用;com.easyjf.dbo.sql.OracleQuery适合Oracle数据库使用。
<property name="easydbo.optimize">节点表示是否需要进行数据优化,这个可以随便设置。
<property name="esyydbo.show_sql">节点表示是否需要在日志中输出具体的SQL语句,若为true则会输出SQL语句,若为false则不输出。输出sql语句对于调试、观察程序的运行比较有用。正式发布的程序的时候为了提高效率,可以设置成为false。
使用JNDI方式获取数据源
很多时候,我们的数据源是存放在容器中的,如Weblogic,这时一般是通过JNDI的方式获得数据源,而数据源治理则交给具体的容器负责。若要通过使用JNDI方式获取数据源,则上面的<property name="easydbo.connection.driver_class">,<property name="easydbo.connection.url">两个属性不需要设置,而是通过<property name="easydbo.connection.jndiFactory">,<property name="easydbo.connection.jndi">两个属性来设置。
三、easyjf-dbo.xml文件中的其它设置
在easyjf-dbo.xml文件中,除了配置数据源以外,还可以配置具体的对象关系表映射,其中<tables><class>这一部分就是供大家直接通过配置文件的方式配置对象关系映射的,由于我们当前示例都是直接使用实现IObject接口方式写的PO,因此只有example中的TestMessage.Java演示了通过配置文件方式实现对象关系映射,这一部分的内容我们将会在以后重点讲述。
四、关于cache的配置
在easyjf-dbo.xml文件中,有<cache>这个节点,以后可通过他来配置数据库的缓存。当前的缓存是通过easyjf-cache.xml文件来配置的。
easyjf-cache.xml文件的全部内容如下:
<?xml version="1.0" encoding="utf-8"?>
<easyjf-cache>
<!-- storePolicy主要有LRU、LFU、FIFO三种-->
<cache name="EasyDBO" storePolicy="LRU" maxElements="1000" expiredInterval="1000" type="com.easyjf.cache.EasyCache"/>
</easyjf-cache>
若要使用cache功能,则在与easyjf-dbo.xml文件所在的目录中建一个easyjf-cache.xml文件,内容如上即可。
关于cache,我们会在以后作具体的介绍。