使用简化开发二牛
中药大全 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相关联,并有着它自己的数据库设置。它会自动地捆绑到服务器的事务管理器中。
昆明男科哪好小孩厌食不吃饭怎么办
铜仁哪家白癜风医院好

- 上一篇: 使用简化开发二覆盖
- 下一篇 使用界面实现数据库基本物业
-
生瓜的功效与作用
2019-07-16
-
冰冷的身体让小小穴位来帮忙
2019-07-13
-
三大果蔬有助于痘痘的治疗
2019-07-07
-
中医教您冬天自制药酒
2019-07-07
-
晚餐吃不好会让你得上慢性病
2019-07-01
-
江西省中医药管理和健康政策高级研修班开班
2019-06-26