冬眠ORM中的几个问题


<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我正在阅读这篇关于冬眠的文章。

  1. 这是初学者的最佳指南吗?
  2. generator class ="native"是什么意思,它有什么作用?
  3. 为什么 id 声明
  4. 为 id 标签,而另一个声明为属性标记。
  5. 人们是否仍然使用XML文件将类与表映射。这是一种老式的方式。
  1. 可能。
  2. 这意味着使用数据库的"本机"id方法,例如Oracle中的序列或MySql中的auto_increment等。
  3. 因为一个是 ID,其他是属性。
  4. 是的。是的,但在某些情况下也更可取,例如,想要/需要将源与 Hibernate 分离或将数据库配置保存在一个地方(XML 文件位于单个目录中,而不是在源文件中,无论它们在哪里)。
  1. 这是一个非常主观的答案。 我会自己从 JPA 指南开始。
  2. 本机意味着它将使用特定于数据库的生成方法。 例如,对于 mysql,它将使用自动增量。 对于预言机,它可以使用序列。
  3. 休眠要求每个实体都有一个 ID。 使用 id 元素对其进行标记。
  4. 大多数人现在使用注释来代替。 这样做的好处是您可以使用 JPA 注释,而不会绑定到休眠状态。 世界上仍然有一个XML配置的地方,例如,映射你没有源代码访问权限的bean。

回答您的问题:

1)这是初学者的最佳指南吗? - 这是冬眠的官方和第一个文档。我宁愿"冬眠在行动"

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

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

4)较旧的应用程序仍然使用xmls。最好在学习时从 xmls 开始,然后将它们转换为注释。

最新更新