频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Java持久化API概述及使用

来源: 作者:IT168 胡磊 出处:巧巧读书 2007-11-11 进入讨论组
上一页 1 2 3 4 5 6 下一页 


四、管制实体
现在你有了一个 EntityManager对象,你可以在桌面环境用它创建查询和事务处理。在你存储一个新的 Player 和 Team 实体之前,你应该开始一个事务处理。在事务处理过程中,使用实体管理器( entity manager)的 persist方法管制一个新的实体。当你持久化它们后,它们就称为了管制状态。你必须提交事务,让这些实体出现在数据库中。毫无疑问,你将会使用 begin 和commit 方法来实现这些操作。
下面的代码演示了如何创建和保存 几个Players信息和他们球队的比赛赛程。

public class CreatePlayersAndTeams ...{ /**//** Creates a new instance of CreatePlayersAndTeams */ public CreatePlayersAndTeams() ...{ } /**//** * @param args the command line arguments */ public static void main(String[] args) ...{ // Create the EntityManager EntityManagerFactory emf = Persistence.createEntityManagerFactory("league"); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); for(Team team: teams) ...{ em.persist(team); } for(Player player: players) ...{ player.setTeam(teams[0]); teams[0].addPlayer(player); em.persist(player); } em.getTransaction().commit(); em.close(); emf.close(); } private static Player[] players = new Player[] ...{ // name, number, last quoted statement new Player("Lowe", "Derek", 23, "The sinker's been good to me."), new Player("Kent", "Jeff", 12, "I wish I could run faster."), new Player("Garciaparra", "Nomar", 5, "No, I'm not superstitious at all.") }; public static Team[] teams = new Team[] ...{ new Team("Los Angeles Dodgers", "National"), new Team("San Francisco Giants", "National"), new Team("Anaheim Angels", "American"), new Team("Boston Red Sox", "American") }; }
这些代码创建了 player和他们的球队,以及如何让这些球队比赛。一旦你创建了这些实体,你就调用了实体管理器的persist 方法。最后,一旦你创建了这些对象和调用了 persist 方法,你就通过调用 commit 方法完成了事务处理。当你完成了数据库操作,通常所有的事务之后,使用 close 方法关闭 实体管理器(entity manager)和它的 factory。
 图一展示了一个 TEAM的表。既然 Team实体已经自动生成了标识符,那么在表中的前四行,从1到4的顺序就是主键的值了。

Java持久化API概述及使用(图一)

图一:Team实体变缺省映射为TEAM表

图二显示了 PLAYER表。自动生成的标识符是接着 TEAM表下来的。注意到 player每行都有一个外键值,与其球队对应。在此例子中,每个 player都属于 拥有主键值1的Dodgers队。

Java持久化API概述及使用(图二)

图二:player表中每行都有一个外键TEAM_ID

 
GlassFish应用实现实际上为你创建了 PLAYER 和 TEAM 表。一旦你使用数据库工具创建了 league数据库,如果数据库中没有这两个表的存在的话,上面的示例代码就会创建所需的实体表。当然,这种操作是可以选择的,它由 persistence.xml文件指定提供商属性 toplink.ddl-generation所决定,在下载的示例代码中你可以看到 create-tables属性值。当然,如果表存在的话,代码执行结果就向存在的表格中插入记录,并且生成很多的警告信息,告诉你存在了那些表。当你需要做改变,测试,删除表,改变代码,重复测试的时候,使用 toplink.ddl-generation属性可以自动创建表,列,和主键,缩短快速开发周期,提高生产力 。
如果是需要创建一个大型数据库,仅仅通过简单的提交持久化实体是不好的做法。你或许喜欢使用 SQL语句或者是数据库供应商自己的工具,来生成表格和其它的数据库元素。但是,持久化规范明确的描述了一条规则就是:当你将你的对象实体映射到成它们之间实体关系时,你要使用提供商实现。规范定义了实体、属性、标志符如何在数据库中建立成为表,列,主键,外键。当你在创建数据库表的时候,会用到 Java持久化API,所以你必须记住命名规约。否则,你要使用声明来重写那些缺省的设置。
http://www.qqread.com/java/2007/11/w381045.html 更多文章 更多内容请看Java环境安装配置Java编程开发手册Java API专题,或进入讨论组讨论。
上一页 1 2 3 4 5 6 下一页 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章