<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我正在阅读这篇关于冬眠的文章。
- 这是初学者的最佳指南吗?
generator class ="native"
是什么意思,它有什么作用?
为什么 id 声明- 为 id 标签,而另一个声明为属性标记。
- 人们是否仍然使用XML文件将类与表映射。这是一种老式的方式。
- 可能。
- 这意味着使用数据库的"本机"id方法,例如Oracle中的序列或MySql中的
auto_increment
等。 - 因为一个是 ID,其他是属性。
- 是的。是的,但在某些情况下也更可取,例如,想要/需要将源与 Hibernate 分离或将数据库配置保存在一个地方(XML 文件位于单个目录中,而不是在源文件中,无论它们在哪里)。
- 这是一个非常主观的答案。 我会自己从 JPA 指南开始。
- 本机意味着它将使用特定于数据库的生成方法。 例如,对于 mysql,它将使用自动增量。 对于预言机,它可以使用序列。
- 休眠要求每个实体都有一个 ID。 使用 id 元素对其进行标记。
- 大多数人现在使用注释来代替。 这样做的好处是您可以使用 JPA 注释,而不会绑定到休眠状态。 世界上仍然有一个XML配置的地方,例如,映射你没有源代码访问权限的bean。
回答您的问题:
1)这是初学者的最佳指南吗? - 这是冬眠的官方和第一个文档。我宁愿"冬眠在行动"
2)休眠中有几个generators
,根据需求我们需要选择合适的一个,基本上是用来生成主键的。例如,如果您使用 generator="assigned"
,即您需要在调用 session.save(entity)
之前手动分配主键。这里native
意味着休眠将根据您在配置中提供的数据库方言负责生成主键。如果您使用 oracle,它使用序列,如果您使用 mysql 或 postgres,则使用auto_increment
3)id表示主键,其他是属性,希望这是约定。
4)较旧的应用程序仍然使用xmls。最好在学习时从 xmls 开始,然后将它们转换为注释。