【问题标题】:Couple of questions in hibernate ORM.休眠 ORM 中的几个问题。
【发布时间】:2012-06-26 15:00:56
【问题描述】:
<hibernate mapping package="org.hibernate.tutorial.domain">

    <class name="Event" table"Events">
       <id name="id" column="EVENT_ID">
          <generator class ="native"/>
       </id>

       <property name="date" type="timestamp" column="EVENT_DATE"/>
       <property name="title"/>

       </class>

</hibernate-mapping>

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/tutorial.html#tutorial-firstapp 我正在阅读这篇关于hibernate的文章。

  1. 这是最适合初学者的指南吗?
  2. generator class ="native" 是什么意思,有什么作用?
  3. 为什么id是用id标签声明的,而另一个用id标签声明 属性标签。
  4. 人们仍然使用xml文件来映射类与表吗?这是一种老式的方式吗?

【问题讨论】:

    标签: java hibernate


    【解决方案1】:
    1. 可能。
    2. 表示使用数据库的“本机”id方法,如Oracle中的序列或MySql中的auto_increment等。
    3. 因为一个是 ID,其他是属性。
    4. 是的。是的,但在某些情况下它也更可取,例如,想要/需要将源与 Hibernate 分离或将 DB 配置保存在一个位置(XML 文件在单个目录中,而不是在任何可能的源文件中)。

    【讨论】:

      【解决方案2】:
      1. 这是一个非常主观的答案。我会自己从 JPA 指南开始。
      2. 本机意味着它将使用特定于数据库的生成方法。例如,对于 mysql,它将使用自动增量。对于 oracle,它可以使用序列。
      3. Hibernate 要求每个实体都有一个 ID。使用 id 元素来标记它。
      4. 现在大多数人都使用注释。有一个优点是您可以使用 JPA 注释而不是绑定到休眠。 XML 配置在世界上仍有一席之地,例如,映射您没有源访问权限的 bean。

      【讨论】:

      • 嘿,这是我听说的 Hibernate 注释的第一个真正优势。我更喜欢 xml 映射文件,因为您可以在不更改一行 Java 代码的情况下对不同的数据库进行不同的映射,它们对映射提供了很好的概述,并且它们有助于正确的数据库设计方式(数据库优先,Java pojos之后)。但主要是个人品味的问题。
      • 呵呵。我首先是 Pojos 的忠实信徒,然后是 db :) 不过,这更像是宗教而非品味。
      【解决方案3】:

      回答您的问题:

      1) 这是初学者的最佳指南吗? - 这是官方的第一个hibernate文档。我更喜欢“Hibernate in Action”

      2) hibernate中有几个generators,需要根据需要选择合适的,基本上是用来生成主键的。例如,如果您使用generator="assigned",即您需要在调用session.save(entity) 之前手动分配主键。这里native 表示休眠将根据您在配置中提供的数据库方言负责生成主键。如果你使用 oracle,它使用序列,如果你使用 mysql 或 postgres,它使用 auto_increment

      3) id 表示主键,其他是属性,希望这是为了约定。

      4) 旧的应用程序仍然使用 xmls。学习的时候最好先从xml开始,然后转成注解。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-01
        • 2019-11-11
        • 2012-09-17
        • 2014-08-22
        • 2015-06-10
        相关资源
        最近更新 更多