你英文好吗,好,有很多资料,不好没关系,等等,目前JDO还有一些先天缺陷,等成熟了,中文也有了,你有JDBC基础,JDO是很容易的!
解决方案 »
- J2EE中使用 水晶报表 求方法 有回报
- spring的配置问题
- jQuery的一个问题
- document 对象是属于jsp中内置的对象 ,还是javascript中的对象?
- org.hibernate.util.JDBCExceptionReporter - SQL Error: 2289, SQLState: 42000
- Hibernate学习
- 问一下Request,I am a bird
- struts问题,哥们姐们赏个脸(2)
- 30岁以后学JAVA还来得及吗?(请30岁以上的回答)
- ubuntu12下安装maven成功,但退出当前端口再检测就会报错,新人求教
- jboss的jvm bind:8080和Oracle Servlet Engine端口冲突怎么解决?
- 初来这欢迎,先向大家问个好,希望大家以后多多关照!我是初学者,用Jbuilder几好,哪有下载,还有哪有java书籍下载,介绍一些好的网站,
public String addressLine1;
public String addressLine2;
public String city;
public String state;
public String zip; public AddressImpl(String addr1, String addr2, String city, String state, String zip){
addressLine1=addr1;
addressLine2=addr2;
this.city=city;
this.state=state;
this.zip=zip;
} public String getAddressLine1() {
return addressLine1;
} public void setAddressLine1(String addressLine1) {
this.addressLine1 = addressLine1;
} public String getAddressLine2() {
return addressLine2;
} public void setAddressLine2(String addressLine2) {
this.addressLine2 = addressLine2;
} public String getCity() {
return city;
} public void setCity(String city) {
this.city = city;
} public String getState() {
return state;
} public void setState(String state) {
this.state = state;
} public String getZip() {
return zip;
} public void setZip(String zip) {
this.zip = zip;
}}
<!DOCTYPE jdo SYSTEM "jdo.dtd">
<jdo>
<package name="com.stereobeacon.jdo.tutorial">
<class name="AddressImpl">
<field name="addressLine1"/>
<field name="addressLine2"/>
<field name="city"/>
<field name="state"/>
<field name="zip"/>
</class>
</package>
</jdo>
“如果您使用诸如 Ant 那样的构建工具,那么它会在幕后为您无缝地完成一切操作”jbuilder有Ant啊,jbuilder怎么在幕后为您无缝地完成一切操作?
java com.libelis.lido.Enhance -metadata metadata.jdo
注:这一步出现了问题。由于没有与 IDE 紧密耦合,现在类文件与源文件不相同。许多 IDE 自动重新生成类文件,而这些类文件会除去增强器所做的任何更改。希望下一代 IDE 能将 JDO 增强构建到工具中。
有了一些 JDO 实现,您可能需要构建数据库来支持持久性对象。您很可能有自动执行此过程的工具。我们的 LiDO 版提供了构建数据库模式的命令行工具。只须重用我们上一步构建的元数据,并且给出数据库驱动程序的名称(在本例中是 MM.MySQL 驱动程序)以及将数据库标识到驱动程序的 URI。正如前面提到的,在运行这个命令之前需要创建 jdotut 数据库。在 MySQL 管理控制台内可以创建数据库。运行下列命令以创建数据库模式:
java com.libelis.lido.ds.jdbc.DefineSchema
-driver org.gjt.mm.mysql.Driver
-database jdbc:mysql://localhost/jdotut
-metadata metadata.jdo
运行该命令后,您就会有一张表,可以存储我们创建的任何具有持久性的地址。源代码中的批处理文件 defineschema.bat 中包含了这个命令。
在以下应用程序中,我们将创建类 Address 的实例。该实例具有持久性之后,应用程序将退出。您会注意到程序的几个特殊部分,如下所示:JDO 设置
事务操作
对象生命周期
至 JDO 的持久性接口
以下是应用程序代码:
package com.stereobeacon.jdo.tutorial;import javax.jdo.PersistenceManagerFactory;
import javax.jdo.PersistenceManager;
import javax.jdo.Transaction;public class Test1 {
public static final String DBURL = "jdbc:mysql://localhost/jdotut";
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver"; public static void main(String[] args) {
try {
/*
* SETUP JDO
*/
// first create and set up a persistence manager
// factory
PersistenceManagerFactory pmf =
(PersistenceManagerFactory) Class
.forName("com.libelis.lido.PersistenceManagerFactory")
.newInstance();
pmf.setConnectionURL(DBURL);
pmf.setConnectionDriverName(DBDRIVER); // now retrieve the persistence manager associated
// with the parameters setup in the factory
PersistenceManager pm = pmf.getPersistenceManager(); /*
* START A TRANSACTION
*/
// retrieve the current transaction
Transaction t = pm.currentTransaction();
// start a new transaction
t.begin(); /*
* CREATE AN OBJECT INSTANCE
*/
AddressImpl a =
new AddressImpl("7700 Technology Way", "", "Denver", "CO", "80237"); /*
* MAKE THE OBJECT PERSISTENT
*/
pm.makePersistent(a); /*
* COMMIT THE OBJECT TO STORAGE
*/ // commit the transaction, all changes made between
// the begin and commit are set to the db
t.commit(); /*
* CLEANUP AND EXIT
*/
pm.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
启动事务:JDO 中的对象是第一级事务参与者。这意味着我们需要更改事务内的对象。(有关事务,您可以查询 JDO 规范,因为有多种支持选项。)我们调用持久性管理器获取对当前事务的引用,本例中,我们 begin 一个新事务。
创建对象实例:按常规进行对象创建。您应该记住实际的运行时调用是对已增强的类进行的。
使对象具有持久性:假设针对对象运行类增强器,makePersistent 方法调用使传递给它的任何对象具有持久性,尽管直到事务提交之后这些对象才可见。
将对象提交给存储器:将对象提交给存储器使对象实例解锁,从而使可能正在寻找同一类型的对象实例的其它进程可以得到它。
清除并退出:使用持久性管理器完成操作后关闭它。
set CLASSPATH=C:\java\mm.mysql-2.0.14\mm.mysql-2.0.14-bin.jar;
set CLASSPATH=C:\java\mm.mysql-2.0.14\lib\jdbc2_0-stdext.jar;%CLASSPATH%
set CLASSPATH=C:\java\mm.mysql-2.0.14\lib\jta-spec1_0_1.jar;%CLASSPATH%
set CLASSPATH=c:\java\LiDO\lib\j2ee.jar;%CLASSPATH%
set CLASSPATH=c:\java\LiDO\lib\lido-rt.jar;%CLASSPATH%
set CLASSPATH=c:\java\LiDO\lib\lido-dev.jar;%CLASSPATH%
set CLASSPATH=c:\java\LiDO\lib\lido-rdb.jar;%CLASSPATH%
set CLASSPATH=c:\java\LIDO\bin;%CLASSPATH%
set CLASSPATH=.;%CLASSPATH%java com.stereobeacon.jdo.tutorial.Test1
请注意上述程序包含了 JDBC 驱动程序、Java 2 企业版 jar 文件(与 JDO 实现包含在一起)、LiDO jar 文件以及 LiDO 的 bin 目录。之所以包含 bin 目录,是因为 LiDO 需要在 CLASSPATH 中包含产品许可证,而许可证保存在 bin 目录中。运行测试将不会产生可见的输出。多次运行测试将把同一个记录多次添加到底层数据库中。产生这一行为(而不是产生重复键异常)的原因是我们让 LiDO 负责生成唯一性键。另一种选择是在有关类的元数据中定义主键。解决了 CLASSPATH 的任何问题后,运行 addressCreate.bat 文件以启动样本。