一个很好的框架 OJB
OJB 是ObJectRelationalBridge 的简称。
一个很好的框架,对数据的操作可以不用写sql语句 ,可以使工作集中在业务逻辑上。
OJB提过多种api让用户选择
大家可以参考
PersistenceBroker API
OJB Queries
ODMG API
JDO API
Advanced O/R
OJB has been designed for a large range of applications, from embedded systems to rich client application to multi-tier J2EE based architectures.
OJB integrates smoothly into J2EE Application servers. It supports JNDI lookup of datasources. It ships with full JTA and JCA Integration. OJB can be used within JSPs, Servlets and SessionBeans. OJB provides special support for Bean Managed EntityBeans (BMP).
1. 安装jdk,并进行设置 set JAVA_HOME=C:\jdk1.3
2. 从http://db.apache.org/ojb/下载包并且揭开(这是一个包的db-ojb-XXX-src.tgz)将这个包揭开放到 d:/db-ojb-XXX/
3. 找到下面的这些包并且放到 d:\db-ojb-XXX\lib目录下面
Jar archive
how to get it
j2ee.jar
Please get it from http://java.sun.com/j2ee/
jdo.jar
(for the OjbStore JDORI Plugin only)
Please get it from http://java.sun.com/products/jdo
jdori.jar
(for the OjbStore JDORI Plugin only)
Please get it from http://java.sun.com/products/jdo
jndi.jar (for JDK1.2 only)
Please get it from http://java.sun.com/
proxy.jar (for JDK1.2 only)
Please get it from http://sf.net/projects/objectbridge/
4. 运行 d:\db-ojb-XXX\bin\build junit
5. 下面运行它自己带的例子
bin\build.bat prepare-tutorials
bin\tutorial1.bat
运行结果
6. 在讲解代码前先对配置文件进行一下说明
respository_user.xml 文件是数据库和你的表的映射
<class-descriptor class="org.apache.ojb.tutorial1.Product" table="PRODUCT">
<field-descriptor name="id" column="ID" jdbc-type="INTEGER" primarykey="true" autoincrement="true"/>
<field-descriptor name="name" column="NAME" jdbc-type="VARCHAR"/>
<field-descriptor name="price" column="PRICE" jdbc-type="DOUBLE"/>
<field-descriptor name="stock" column="STOCK" jdbc-type="INTEGER"/>
</class-descriptor>
respository_database.xml 是配置你的数据库 例子用的是免费的hsql
7.对例子代码进行一下说明
org.apache.ojb.tutorial1.Product.java 配置文件中映射的类,内容很简单全部是set get方法]
7.1增加操作
PersistenceBroker broker = … /得到一个borker
Product newProduct = new Product(); //首先声明一个product
newProduct.setName(..);
newProduct. SetPrice(…)
newProduct .setStock(…) //增加产品的内容
try
{ broker.beginTransaction(); //设置事务开始
broker.store(newProduct); //开始增加
broker.commitTransaction(); //commit事务
}
catch (PersistenceBrokerException ex)
{ broker.abortTransaction(); //回滚事务
System.out.println(ex.getMessage());
ex.printStackTrace();
}
7.2 修改操作
Product example = new Product(); //声明一个Product
example.setId(id); //设置修改的product
try
{ broker.beginTransaction(); //设置事务开始
example.setName(..); //修改
example. SetPrice(…)
example.setStock(…)
broker.commitTransaction(); //commit事务
}
catch (PersistenceBrokerException ex)
{ broker.abortTransaction(); //回滚事务
System.out.println(ex.getMessage());
ex.printStackTrace();
}
7.3删除
Product example = new Product(); //声明一个Product
example.setId(id); //设置删除的product
Query query = new QueryByIdentity(example); //得到一个Query
try
{ broker.beginTransaction();
Product toBeDeleted = (Product) broker.getObjectByQuery(query);
broker.delete(toBeDeleted); //删除
broker.commitTransaction();
} catch (Throwable t)
{ broker.abortTransaction();
t.printStackTrace();
}
7.4 列出Product
Query query = new QueryByCriteria(Product.class, null); //得到一个Query
try{ Collection allProducts = broker.getCollectionByQuery(query);
java.util.Iterator iter = allProducts.iterator();
while (iter.hasNext())
{
System.out.println(iter.next());
}
}
catch (Throwable t)
{
t.printStackTrace();
}
对查询的一些详细的做法可以参考 http://db.apache.org/ojb/query.html
8 修改使用的数据库
如果你的系统中需要加入OJB
如果要修改数据库请修改respository_database.xml
下面是修改是使用Oracle 数据库
<jdbc-connection-descriptor
jcd-alias="default"
default-connection="true"
platform="Oracle"
jdbc-level="2.0"
driver="oracle.jdbc.driver.OracleDriver"
protocol="jdbc"
subprotocol="oracle:thin:@192.168.0.152:1521"
dbalias="orcl"
username="cimc"
password="123456"
eager-release="false"
batch-mode="false"
useAutoCommit="1"
ignoreAutoCommitExceptions="false"
>
这里做一个简单的介绍,详细的请大家自己去看看