Java 使用注释映射时仍然需要XML映射吗?
我试图通过一本书来学习Hibernate,书中写道: Hibernate提供了一些必须配置的特性,如延迟加载、级联、缓存等。此信息表示为对象/关系映射元数据 Hibernate支持以下三种不同的策略来描述此元数据:Java 使用注释映射时仍然需要XML映射吗?,java,hibernate,annotations,Java,Hibernate,Annotations,我试图通过一本书来学习Hibernate,书中写道: Hibernate提供了一些必须配置的特性,如延迟加载、级联、缓存等。此信息表示为对象/关系映射元数据 Hibernate支持以下三种不同的策略来描述此元数据: 设置XML映射文件 用Hibernate XDoclet标记注释持久类 用Hibernate注释注释持久类 所以我认为这三种方法都是相互依存的。我正在尝试使用第三种方法进行注释。我有一节以下的课 @Entity @Table(name = "SOME_TABLE") publi
- 设置XML映射文件
- 用Hibernate XDoclet标记注释持久类
- 用Hibernate注释注释持久类
@Entity
@Table(name = "SOME_TABLE")
public class SomeClass implements Serializeable {
/// ...
}
我尝试在hibernate.cfg.xml
中运行它,但没有任何映射,我得到了这个异常
org.hibernate.MappingException: Unknown entity:com...SomeClass
所以我认为在hibernate.cfg.xml
文件中需要一些映射。因此,我尝试创建一个空映射文件SomeClass.hbm.xml
<hibernate-mapping>
<class name="somepackage.SomeClass" table="SOME_TABLE">
</class>
</hibernate-mapping>
<hibernate-configuration>
<session-factory>
... propert tags
<mapping resource="somepackage/SomeClass.hbm.xml"/>
</session-factory>
</hibernate-configuration>
但是我得到了一个SaxParseException
SAXParseException ... The content of element type "class" is incomplete
这完全有道理,因为内容不完整
但当我填写所有必要的属性时,一切正常,表格也随之更新
<hibernate-mapping>
<class name="com.underdogdevs.hibernatepractice.StudentEntity" table="STUDENT">
.. id and property elements all in place.
</class>
</hibernate-mapping>
.. id和属性元素都已就位。
从书中的上述陈述中,我想我可以做一个或另一个,或者使用注释元数据映射,或者XML metdadata映射。只使用XML映射而不使用注释映射,效果很好,那么为什么不使用另一种方法呢?我是否使用
SomeClass.hbm.xml
文件在hibernate.cfg.xml
文件中正确映射了实体
类?如果是这样,使用注释映射创建类的正确方法是什么?这本书并没有真正解释这一点。这是一个前所未有的新话题
使用注释映射时仍然需要XML映射吗
绝对不是。
对于给定的实体,这两者是互斥的
不必详细介绍正在运行的特定应用程序服务器,以及配置Hibernate的各种不同方法,您所需要的只是
persistence.xml
和注释
由于持久性注释对您不起作用,因此由您来决定
你可能会发现这本书比你正在使用的任何一本书都要更新 基于注释的映射不需要XML映射,注释的全部思想是摆脱繁琐的XML 我已经有一段时间没有使用纯Hibernate(而不是通过JPA使用它),但是它应该只需要很少的XML配置,因为您也可以通过注释配置会话工厂 现在这是一个不完整的答案,因为我主要是通过JPA来考虑这个问题的,但是由于Hibernate实现了JPA,所以它应该是正确的