PropertySet教程-3.JDBC方式

简介:

  inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish )。

  PropertySet(来源:http://blog.csdn.net/inkfish) 是由opensymphony组织开发的的一个开源项目,但是那个项目文档少,长时间没有更新,官方文档错误奇多,所以现在在项目中使用并不广泛。但这并 不妨碍PropertySet成为一个优秀的key-value持久化模块,当前,PropertySet可以说已经够用。这里我整理书写了 PropertySet的文档。(来源:http://blog.csdn.net/inkfish)


  介绍完了memory、map、XML方式,该JDBC方式登场了。JDBC方式存储,一定需要一个关系数据库,这里我用的是IBM DB2 v9.7。(来源:http://blog.csdn.net/inkfish)

1.建表SQL (来源:http://blog.csdn.net/inkfish)

create table OS_PROPERTYENTRY( GLOBAL_KEY varchar(255) not null, ITEM_KEY varchar(255) not null, ITEM_TYPE smallint, STRING_VALUE varchar(255), DATE_VALUE date, DATA_VALUE blob, FLOAT_VALUE float, NUMBER_VALUE numeric, primary key (GLOBAL_KEY, ITEM_KEY) );

  下载下来的PropertySet包里不包含建表SQL,需要自己照葫芦画瓢来写,当然也有方便的方法,就是去下一个osworkflow,在src/etc/deployment/jdbc 目录下有一堆数据库的建表SQL,其中就包含了PropertySet的建表SQL。(来源:http://blog.csdn.net/inkfish)

2.配置文件 (来源:http://blog.csdn.net/inkfish)

  propertyset.xml 放在classpath根路径下,内容:(来源:http://blog.csdn.net/inkfish)

<?xml version="1.0" encoding="UTF-8"?> <propertysets> <propertyset name="jdbc" class="com.opensymphony.module.propertyset.database.JDBCPropertySet"> <arg name="datasource" value="db2ds" /> <arg name="table.name" value="OS_PROPERTYENTRY" /> <arg name="col.globalKey" value="GLOBAL_KEY" /> <arg name="col.itemKey" value="ITEM_KEY" /> <arg name="col.itemType" value="ITEM_TYPE" /> <arg name="col.string" value="STRING_VALUE" /> <arg name="col.date" value="DATE_VALUE" /> <arg name="col.data" value="DATA_VALUE" /> <arg name="col.float" value="FLOAT_VALUE" /> <arg name="col.number" value="NUMBER_VALUE" /> </propertyset> </propertysets>

  注:这个配置文件和propertyset默认的配置文件不同处在于仅有JDBC一段的配置,并且修改了JNDI名称。由于示例中不使用web容器,仅仅偷用tomcat的jar包里简单的JNDI naming服务,所以JNDI名字取的是一个不带“/”的字符串,如果带“/”如“jdbc/db2ds”会报错。(来源:http://blog.csdn.net/inkfish)

 

3.Jar包依赖 (来源:http://blog.csdn.net/inkfish)

需要的jar包除上一篇中的那些jar包,还需要:(来源:http://blog.csdn.net/inkfish)

  1.数据库JDBC驱动:db2jcc.jar、db2jcc_license_cu.jar
  2.tomcat里的jar:catalina.jartomcat-juli.jar
  3.EJB的jar:ejb-api.jar ,带EJB的jar是因为com.opensymphony.module.propertyset.JDBCPropertySet 中使用了com.opensymphony.util.EJBUtilsEJBUtils 中某些需要被调用的方法使用了EJB的API。(来源:http://blog.csdn.net/inkfish)

 

4.Demo代码 (来源:http://blog.csdn.net/inkfish)

import java.util.HashMap; import java.util.Map; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import org.apache.commons.lang.StringUtils; import com.ibm.db2.jcc.DB2DataSource; import com.opensymphony.module.propertyset.PropertySet; import com.opensymphony.module.propertyset.PropertySetManager; public class PropertySetDemo2 { public static void main(String[] args) throws Exception { PropertySetDemo2 demo = new PropertySetDemo2(); demo.initJNDI(); demo.jdbcPsDemo(); } public void initJNDI() throws NamingException { //生成一个DataSource实例 DB2DataSource ds = new DB2DataSource(); ds.setDriverType(4); ds.setServerName("127.0.0.1"); ds.setPortNumber(50000); ds.setDatabaseName("study"); ds.setUser("db2admin"); ds.setPassword("db2admin"); //注册JNDI System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory"); //System.setProperty("java.naming.factory.url.pkgs", "org.apache.naming"); Context context = new InitialContext(); context.bind("db2ds", ds); } public void jdbcPsDemo() { System.out.println(StringUtils.center("JDBC PropertySet Demo", 80, '*')); Map<String, String> map = new HashMap<String, String>(); map.put("globalKey", "a");//不可缺省。不同项目或不同模块可以用不同的globalKey,并且持久化到同一个表中 PropertySet ps = PropertySetManager.getInstance("jdbc", map); ps.setBoolean("BooleanPS", true); ps.setString("name", "Jack"); ps.setDouble("dvalue", 0.1234567); System.out.println(ps.getBoolean("BooleanPS")); System.out.println(ps.getString("name")); System.out.println(ps.getDouble("dvalue")); System.out.println(StringUtils.repeat("*", 80)); } }

 

5.典型实践(来源:http://blog.csdn.net/inkfish)

  在一个项目中,每个人分成不同的模块,在测试机或者自己的本机各搭建了多个环境,每个环境有不同的参数,大家把配置信息存放到XML中,随时可以打开修改。在最后集成测试时,把配置信息统一放到测试机的测试数据库中进行统一管理。不同模块使用不同globalKey以防冲突。(来源:http://blog.csdn.net/inkfish)

目录
相关文章
|
10月前
|
SQL Java 数据库连接
Hive教程(08)- JDBC操作Hive
Hive教程(08)- JDBC操作Hive
581 0
|
11月前
|
XML Java 数据库连接
使用Spring JDBC中的JdbcTemplate对数据进行增删改查操作教程~
使用Spring JDBC中的JdbcTemplate对数据进行增删改查操作教程~
162 0
|
Java 数据库连接 Android开发
eclipse导入jdbc教程(简洁)
eclipse导入jdbc教程(简洁)
206 0
|
SQL 存储 Java
JDBC教程
JDBC教程
172 0
|
SQL 安全 Java
肝!Spring JDBC持久化层框架“全家桶”教程!
肝!Spring JDBC持久化层框架“全家桶”教程!
204 0
肝!Spring JDBC持久化层框架“全家桶”教程!
|
SQL Oracle Java
JDBC初学(复习)必备学习笔记-保姆级笔记教程
教程中讲解了Java语言如何连接数据库,对数据库中的数据进行增删改查操作,适合于已经学习过Java编程基础以及数据库的同学。Java教程中阐述了接口在开发中的真正作用,JDBC规范制定的背景,JDBC编程六部曲,JDBC事务,JDBC批处理,SQL注入,行级锁等。
182 0
JDBC初学(复习)必备学习笔记-保姆级笔记教程
|
SQL Java 关系型数据库
mybatis学习教程(一)JDBC到mybatis
     定义: 写作时间:2015年8月27日11:15:50 mybatis是一个java持久层框架,java中操作关系型 数据库用的是jdbc,mybatis是对jdbc的一个封装。
1657 0
|
1月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
46 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
1月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
57 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)