首页 >> 中药大全

使用简化开发二牛

中药大全  2021年09月06日  浏览:6 次

基本操作 要创建一个数据对象并把它存入数据库中,你只需简单地使用Java的new关键字来创建POJO,并把它传给rsist()方法。

Person p = new Person ();

tName (\"A new baby\");

tDateOfBirth (new Date ());

rsist (p);

要从数据库中取得对象,你可以使用EJB 3.0查询语言来搜索数据库。下面的例子演示了如何将Person表中的所有行作为Person Java对象的集合来返回。

// 得到所有人的对象

Collection Person persons = (Collection Person)

eateQuery(\"from Person p\").getResultList();

可管理的POJO

通过实体管理器保存和获取的对象是被管理在持久化上下文中的。这意味着如果对象后来被改变了,那这种改变将会被自动检测并持久化到数据库中。在下面的例子中,我们更新了一个可管理的POJO的一个属性。这个改变会被EJB 3.0容 器自动检测到并发送给了数据。

Person p = nd(ass, personId);

tName (\"Another Name\");

//p会在当前事务结束时被自动地更新到数据库中去。

// 并没用更多的API调用

既然EJB 3.0实体仅只是POJO,那么它们就可以能够被序列化并通过络传递。如果一个对象不是被容器创建的(也就是说,它是从络连接中传递过来的或者是某一个远程调用返回的结果),那么持久化上下文并不会管理它。不过,你可以通过调用rge()方法将一个非管理的POJO合并到持久化上下文中。下面是将一个解序列化的POJO合并入当前持久化上下文中的例子。

InputStream in;

// 初始化输入流

Person p = serialize (in);

// ... ...

rge (p);

// p现在是一个可管理的对象了。p的任何改变将会被自动检测并持久化

tName (\"Another Name\");

数据库同步

当实体管理器对象在一个session bean中使用时,它是和服务器的事务上下文绑定的。实体管理器在服务器的事务提交时提交并且同步它的内容。在一个session bean中,服务器的事务默认地会在调用堆栈的最后提交。当然,你也可以通过注释来为每个商务方法指定具体的事务属性。下面的例子展示了如何为一个session bean的方法声明一个新的事务。

@TransactionAttribute(QUIRESNEW)

public void update () {

// 这个方法更新Person对象

// 更新将会在这个方法的末尾被提交和刷新到数据库中

批处理中刷新数据库操作

为了只在当事务提交时才将改变更新到数据库中,容器将所有数据库操作集中到一个批处理中,这样就减少了代价昂贵的与数据库的交互。

如果你需要在事务提交之前将更新刷新到数据库中,你可以直接地调用ush()方法。或者你可以将一个方法注释为@FlushMode(VER),于是事务管理器将不会在方法的结尾(也就是事务的结尾)处刷新更新到数据库中。这种情况下,你可以手工地来刷新数据库以获得对数据库操作的最大控制。

总结

李继会认为 EJB 3.0 提供了一种简单有效的框架将Java POJO映射到SQL数据库中的关系型表中。它基于Java类中的名字和结构进行智能的默认映射策略。但你也可以用一组简单的注释重载所有的默认值,来处理复杂的对象关系。

EJB 3.0实体管理器提供了简单的API来持久化和从数据库中查找对象。每一个实体管理器对象与一组映射的POJO相关联,并有着它自己的数据库设置。它会自动地捆绑到服务器的事务管理器中。

昆明男科哪好
小孩厌食不吃饭怎么办
铜仁哪家白癜风医院好
友情链接