六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 48|回复: 0

Spring和DB4O集成总结( 入门级A)

[复制链接]

升级  10%

17

主题

17

主题

17

主题

秀才

Rank: 2

积分
65
 楼主| 发表于 2013-1-15 03:13:28 | 显示全部楼层 |阅读模式
Spring和DB4O集成总结<o:p></o:p>

步1。
编写一个包含SETTER,GETTER的POJO类:
<span />
package com.model;
/**
 * @author gyc

 */
public class ModelBean { 
       private String msg;
       private String name;
       private Integer id;        
       public ModelBean() {
              super();
              // TODO Auto-generated constructor stub
       }
<o:p> </o:p> /**
        * @param msg
        * @param name
        * @param id
        */
       public ModelBean(String msg, String name, Integer id) {
              super();
              this.msg = msg;
              this.name = name;
              this.id = id;
       }
<span />       public Integer getId() {
              return id;
       }
<span />       public void setId(Integer id) {
              this.id = id;
       }
<span />       public String getName() {
              return name;
       }
<o:p></o:p>
<o:p></o:p>
       public void setName(String name) {
              this.name = name;
       }
<o:p></o:p>
<o:p></o:p>
       public String getMsg() {
              return msg;
       }
<span />    public void setMsg(String msg) {
              this.msg = msg;
              System.out.println("Now in ModelBean's setMsg() method,the msg is-->"+msg);
       }
<o:p> </o:p>       public void sayHello()
       {
<span />  System.out.println(msg);
       }}
及在Spring初始化配置文件中配置:
<bean id="hello" class="com.model.ModelBean"><o:p></o:p>

    <property name="name"><o:p></o:p>

           <value>tomvalue><o:p></o:p>

       property><o:p></o:p>

       <property name="id"><o:p></o:p>

           <value>13value><o:p></o:p>

       property><o:p></o:p>

       <property name="msg"><o:p></o:p>

           <value>你好,Tom!value>

<span style="">property><o:p></o:p>

    bean><o:p></o:p>
步2:编写访问DB4O数据库的处理类:
<span />
package com.store;<o:p></o:p>
import java.io.File;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
<o:p></o:p>
import com.db4o.Db4o;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
import com.model.ModelBean;
import com.store.db4outil.Util;
<o:p></o:p>
/*
 * @author gyc
 */
public class AccessDb4oDeal {
<o:p> </o:p>       public AccessDb4oDeal() {
              // TODO Auto-generated constructor stub
              // 打开DB4O对象数据库
              // new File(Util.DB4OFILENAME).delete();
              // db = Db4o.openFile(Util.DB4OFILENAME);
<o:p> </o:p>
       }
<o:p></o:p>
       private ObjectContainer db = null;
<o:p></o:p>
       private String dbfilename;
<o:p></o:p>
       private ModelBean modelbean;
<o:p></o:p>
       public ModelBean getModelbean() {
              return modelbean;
       }
<o:p></o:p>
       public void setModelbean(ModelBean modelbean) {
              this.modelbean = modelbean;
       }
<o:p></o:p>
       public String getDbfilename() {
              return dbfilename;
       }
<o:p></o:p>
       public void setDbfilename(String dbfilename) {
              this.dbfilename = dbfilename;
       }<o:p> </o:p>
       // 打开DB4O对象数据库
       public void initAndOpenDb4o() {
              // new File(Util.DB4OFILENAME).delete();
              // db = Db4o.openFile(Util.DB4OFILENAME);
              // new File(this.dbfilename).delete();//如果有这条语句,则会先把之前数据删除
              // db = Db4o.openFile(this.dbfilename);
              db = Util.openLocalDb(db);
              System.out.println("Now in AccessDb4oDeal ,initAndOpenDb4o() mehtod!");
       }
<o:p></o:p>
       public boolean storeObject(Object obj) {
              boolean flag = false;
              try {
                     Util.storeObject(db, obj);
                     System.out.println("Now in AccessDb4oDeal,storeObject Method!");
                     flag = true;
              } catch (Exception ex) {
                     System.out.println("向DB4O对象数据库插入对象数据发生异常:" + ex);
              } finally {
                     Util.closeDb(db);
              }
              return flag;
       }
<span />  // QBE方式检索所有对象数据
       public Collection queryAllObjects(Object obj) {
              java.util.List list = null;
<o:p></o:p>
              try {
                     ObjectSet os = Util.retrieveAllObjectQBE(db, obj);
                     list = Util.convertObjectSet(os);
                     System.out.println("Now in AccessDb4oDeal,queryAllObjects method!");
              } catch (Exception ex) {
                     System.out.println("从对象数据库中检索对象失败: " + ex);
              } finally {
                     Util.closeDb(db);
              }
              return list;
<o:p></o:p>
       }
<span />  // 用迭代器遍历集合数据
       public void listResult(Collection col) {
              System.out.println("Now in AccessDb4oDeal,listResult method!The Result size is --->"+ col.size());
              Iterator it = col.iterator();
              while (it.hasNext()) {
                     ModelBean obj = (ModelBean) it.next();
                     System.out
                                   .println("Now in AccessDb4oDeal,listResult method!The Object's Field Data is -->"
                                                 + obj.getMsg());
              }
       }
<span />  // 从对象数据库(只限本次连接)中检索所有对象数据,返回一个对象集合
       public Collection findAllObjects(Object obj) {
              java.util.List list = null;
              try {
                     ObjectSet os = Util.retrieveAllObject(db, obj.getClass());
                     list = Util.convertObjectSet(os);
                     System.out.println("Now In AccessDb4oDeal,findAllObjects method!");
              } catch (Exception ex) {
                     System.out.println("从对象数据库中检索对象数据失败: " + ex);
              } finally {
                     Util.closeDb(db);
              }
              return list;
       }
<span /> /*
        * 根据特殊条件检索对象
        */      
public Object findObjectByFieldValue(Object obj, String field, String value) {
              Object objreturn = null;
              try {     ObjectSet os = Util.queryObjectQEByFieldPramatersString(db, obj
                                   .getClass(), field, value);
                     List list = Util.convertObjectSet(os);
                     Iterator it = list.iterator();
                     while (it.hasNext()) {
                            objreturn = it.next();
                     }
              } catch (Exception ex) {
                     System.out.println("根据字段值条件检索对象失败: " + ex);
              } finally {
                     Util.closeDb(db);
              }
              return objreturn;
<o:p></o:p>
       }
}
<o:p></o:p>
及在Spring初始化配置文件中配置(用于Spring生成访问DB4O数据库的处理类):
<bean id="accessdb4odeal" class="com.store.AccessDb4oDeal"><o:p></o:p>

       <property name="dbfilename"><o:p></o:p>

           <value>formula1.db4ovalue>property> bean><o:p></o:p>

还有作为TOOLS的DB4O工具类:<o:p></o:p>
package com.store.db4outil;
<span style="" />import java.util.List;
<span style="" />import com.db4o.*;<o:p></o:p>
import com.db4o.query.Constraint;<o:p></o:p>
import com.db4o.query.Query;<o:p>  </o:p>
/* @author gyc
 */<o:p></o:p>
public class Util {<o:p></o:p>
    public final static String DB4OFILENAME = "formula1.db4o";
<span style="" /> // 向对象数据库插入对象<o:p></o:p>
    public static void storeObject(ObjectContainer db, Object obj) {db.set(obj);<o:p></o:p>
       System.out.println("Stored-->: " + obj);<o:p></o:p>
    }
<span style="" /> // QBE方式检索对象数据库中所有对象数据<o:p></o:p>
    public static ObjectSet retrieveAllObjectQBE(ObjectContainer db, Object obj) {<o:p></o:p>
       return db.get(obj);<o:p></o:p>
    }<span style="">
<span />
 
    // 遍历对象集<o:p></o:p>
    public static void listResult(ObjectSet result) {<o:p></o:p>
       System.out.println(result.size());<o:p></o:p>
       while (result.hasNext()) {<o:p></o:p>
           System.out.println(result.next());<o:p></o:p>
       }<o:p></o:p>
    }    // 遍历LIST对象<o:p></o:p>
    public static void listResult(java.util.List result) {<o:p></o:p>
       System.out.println(result.size());<o:p></o:p>
       for (int x = 0; x < result.size(); x++) {<o:p></o:p>
           System.out.println(result.get(x));<o:p></o:p>
       }<o:p></o:p>
    }    // Native Queries方式检索对象数据库中所有对象数据<o:p></o:p>
    public static ObjectSet retrieveAllObject(ObjectContainer db, Class xls) {<o:p></o:p>
       return db.get(xls);<o:p></o:p>
    } 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表