Hibernate实战_笔记6(第一个Hibernate项目)

本章内容

1、用Hibernate和Java Persistence实现“Hello World”
2、正向和反向工程的工具集
3、Hibernate配置和整合


启动Hibernate项目

      在有些项目中,应用程序的开发是通过开发人员以面向对象方式分析业务领域来驱动的。在其他项目中,则深受现有关系数据模型的影响,比如一个遗留的数据库或者由专业的数据建模者设计的一个全新模式。
当我们在接下来的几节中建立基础的Hibernate项目时,将讨论这些问题。下面是你建立基础的Hibernate项目的过程:
(1)选择开发过程
(2)建立项目基础
(3)编写应用代码和映射
(4)配置和启动Hibernate
(5)运行应用

选择开发过程

      我们先从总体上看看可用的工具、用作源输入的制品,以及生成的输出。


      说明:AndroMDA是一种从UML图文件产生POJO源代码的工具,严格来说不是常用Hibernate工具箱的一部分。

Eclipse IDE的Hibernate Tools是Eclipse IDE的插件(Eclipse的JBoss IDE的一部分——一组向导、编辑器和Eclipse中的额外视图,帮助开发EJB3、Hibernate、JBoss Seam和基于JBoss中间件的其他Java应用)。正向和反向工程的特性相当于基于Ant的工具。另外的Hibernate Console视图允许对数据库执行特别的Hibernate查询(HQL和Criteria),并以图表形式浏览结果。Hibernate Tools XML编辑器支持映射文件的自动完成,包括类、属性,甚至表格和列名称。

以下为常见的开发场景:

1、自顶向下(top-down)——在自顶向下的开发中,从一个现有的领域模型开始,使用Java完成领域模型的实现,并(理想地)完成数据库Schema方面的自主。你必须构建映射元数据——用XML文件或者通过注解Java源代码,然后选择性地让Hibernate的hbm2ddl工具产生数据库Schema。没有现成的数据库Schema,对于大部分Java开发人员来说,是最舒适的开发风格。你甚至可以使用Hibernate Tools在每个应用程序于开发过程中重启时,自动刷新数据库Schema。
2、自底向上(bottom-up)——反之,自底向上开发始于一个现有的数据库Schema和数据模型。此时,最容易进行的方式就是使用反射工程工具从数据库抽取元数据。这个元数据可被用来生成XML映射文件,例如用hbm2hbmxml。利用hbm2java,Hibernate映射元数据用来生成Java持久化类,甚至数据访问对象。或者,不编写到XML映射文件,被注解的Java源代码(EJB3.0实体类)可以直接由工具生成。但是,并非所有的类关联细节和Java专有的元信息都可以用这种策略自动从SQL数据库Schema中生成,因此需要一些手工的工作。
3、起自中间层(middle out)——Hibernate XML映射元数据提供充分的信息来完全推导出数据库Schema,并给应用的持久层生成Java源代码。有些架构师和开发人员更喜欢起自中间层开发,他们在那里开始手写Hibernate XML映射文件,然后用hbm2ddl生成数据库Schema,用hbm2java生成Java类。这种开发风格只建议经验丰富的Hibernate专家使用。
4、在中间会合(meet in the middle)——最难的场景是合并现有的Java类和现有的数据库Schema。此时,Hibernate工具集就无能为力了。


      首先假设开发过程是自顶向下的,并且将快速完成一个不涉及任何遗留数据库Schema或者Java代码的Hibernate项目。之后,将把代码迁移到JPA和EJB3.0,然后从一个现有的数据库Schema反向工程,自底向上地开始一个项目。

      因为该步骤没有多大难度,我直接跳过了,给予连接地址下载http://download.csdn.net/detail/com185272358/7004629

Oracle+Hibernate

数据库连接池

      一般来说,不需要在每次要与数据库交互时都创建连接。反之,Java应用程序应该使用连接池(pool)。需要在数据库上工作的每个应用程序线程都从这个池中请求连接,然后当执行完所有SQL操作后把它返回到池中。这个池维护着连接,并使打开和关闭连接的成本减到到最少。
使用连接池有3个原因:
1、获得新的连接很昂贵
2、为数据库管理系统维护许多闲置的连接很昂贵
3、给某些驱动程序创建预编译的语句也很昂贵,且连接池可以对跨请求的连接高速缓存语句


      没有应用程序服务器提供连接池,应用程序要么实现它自己的池化算法,要么依赖于第三方的库(如开源C3P0连接池软件)。没有Hibernate,应用程序代码就调用连接池来获取JDBC连接,然后用JDBC编程接口执行SQL语句。当应用程序关闭SQL语句,且最后关闭连接时,预编译的语句和连接没有释放,而是返回池中。
使用Hibernate,这个图就变了:它充当JDBC连接池的一个客户端程序,应用程序代码给持久化操作使用Hibernate的Session和Query API,它用Hibernate的Transaction API管理数据库事务。



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值