原文链接:http://stackoverflow.com/questions/217831/how-to-use-hibernate-any-related-annotations
1:业务场景:有时我们需要映射关联属性不同类型的实体,这个时候@ManyToAny 或者 @Any就可以解决该业务场景问题。
2:直接上业务实例。
用户信息(User)、出借信息(BorrowInfo)、出借类别书本(Book)、出借类别DVD(DVD)、出借类别VHS(VHS)。
3:
(1)省去用户信息
(2)出借类别书本(Book)实体模型
@Entity @Table(name = "T_BOOK") public class Book { @Column(name="ID") private String id ; @Column(name="NAME") private String name; @Column(name="ITEM_TYPE") private String itemType; ----省去Get Set方法 }
(3)出借类别DVD实体模型
@Entity @Table(name = "T_DVD") public class DVD { @Column(name="ID") private String id ; @Column(name="NAME") private String name; @Column(name="ITEM_TYPE") private String itemType; }
(4)出借类别VHS实体模型
@Entity @Table(name = "T_VHS") public class VHS { @Column(name="ID") private String id ; @Column(name="NAME") private String name; @Column(name="ITEM_TYPE") private String itemType; }
(5)出借信息BorrowInfo实体模型设计
@Entity @Table(name="BORROW") public class BorrowInfo { @Column(name="ID") private String id; @JoinColumn(name="USER_ID") private User user; @Any(metaColumn = @Column(name = "ITEM_TYPE")) @AnyMetaDef(idType = "string", metaType = "string", metaValues = { @MetaValue(targetEntity = Book.class, value = "B"), @MetaValue(targetEntity = VHS.class, value = "V"), @MetaValue(targetEntity = DVD.class, value = "D") }) @JoinColumn(name="ITEM_ID") private Object itemObj; }
补充:有些业务场景需要用到@ManyToAny,可以参见stackoverflow中的方法。
相关推荐
hibernate@注解方式配置实体类时,利用javadoc接口生成数据库表及字段的注释说明,支持oracle、sqlserver、db2、mysql数据库。因用到java\lib\tools.jar,需要将该jar放入工程lib下(或者tomcat\lib下、或加入...
描述 "springmvc管理hibernate," 提及了SpringMVC作为前端控制器,用于管理和协调Hibernate这个持久层框架的使用。标签 "mybeanutils_ hibernate_@finder mis springmvc springmvc_hiberna" 明确了涉及的技术组件,...
hibernate@注解方式配置实体类时,利用javadoc接口生成数据库表及字段的注释说明,支持oracle、sqlserver、db2、mysql数据库。因用到java\lib\tools.jar,需要将该jar放入工程lib下(或者tomcat\lib下、或引用方式都行...
通过阅读《Hibernate注释.doc》和《Hibernate注释大全.txt》这两个文档,你可以获得更详细的信息,深入理解Hibernate注解的使用场景和配置细节。同时,参考提供的博文链接...
hibernate
为了使这个关系在Hibernate中生效,还需要在Hibernate的配置文件(如`hibernate.cfg.xml`或通过Java配置)中添加相应的映射文件(`.hbm.xml`)或者使用注解驱动。在现代项目中,更常见的是使用注解驱动,因为它更...
4. 配置DAO层:创建基于Spring的DAO接口和实现类,使用`@Autowired`注解注入SessionFactory,然后在方法中使用SessionFactory创建Session,进行数据库操作。 5. 事务管理:通过Spring的`@Transactional`注解,实现...
**hibernate二级缓存详解(包括注解...综上所述,理解并正确使用Hibernate的二级缓存能显著提升应用性能,但需注意其适用场景及潜在风险。在实际项目中,结合具体业务需求,灵活调整缓存策略,才能最大化发挥其优势。
文档来自于Hibernate官网,希望能帮助别人。
hibernate链接数据库的详细配置信息,包含各种数据库的链接方式
本文档旨在提供一个全面的@hibernate Tag参考指南,帮助开发人员更好地理解和使用这些标签。 #### 一、@hibernate Tag for Class Level 在类级别上应用@hibernate Tag可以定义持久化类的属性和行为。 ##### 1.1 @...
本文主要总结了Hibernate中常见的注解用法,涵盖了类级别和属性级别的注解,以及与主键和非主键相关的注解。 1. 类级别注解: - `@Entity`: 这个注解是必不可少的,它告诉Hibernate一个Java类是一个实体,可以映射...
标题“使用Hibernate封装方法”暗示我们将讨论如何在项目中通过封装Hibernate操作,以提高代码的复用性和可读性。通常,我们会在DAO(数据访问对象)层进行这些封装,将数据库的CRUD(创建、读取、更新、删除)操作...
`HibernateDemo(hibernate基本用法演示)` 是一个针对 Hibernate 框架的基础操作示例项目。Hibernate 是一款强大的 Java ORM(对象关系映射)框架,它允许开发者在 Java 应用程序中以面向对象的方式处理数据库交互,...
在Java世界中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库。本文将详细解析Hibernate中的注解使用,帮助理解如何通过注解简化数据库操作。 首先,实体Bean是...
5. **Hibernate内部处理**:Hibernate的内部实现可能存在对这种组合使用方式的支持不足,可能会导致解析异常或者在保存、更新和加载对象时出现问题。 为了解决这个问题,开发者可以尝试以下策略: - **重新设计...
本篇将深入探讨Hibernate 3版本中的注解使用,帮助开发者理解如何利用注解进行数据持久化,提高开发效率。 一、Hibernate 3简介 Hibernate 3是Hibernate ORM框架的一个重要版本,它引入了许多新特性,如对JPA(Java...
Hibernate3 是一个强大的Java持久...理解并熟练掌握Hibernate3的核心概念和使用方法,对于任何Java开发者来说都是必要的技能。在实际项目中,正确配置和使用Hibernate,可以有效地实现数据的持久化,同时降低维护成本。
8. **查询注解**:Hibernate的HQL或JPQL可以通过`@Query`注解直接在DAO方法中写入,也可以使用`@NamedQuery`在实体类中预定义查询。 9. **测试**:通过JUnit进行集成测试,验证整个流程的正确性,包括数据的CRUD...
Session session=HibernateSessionFactory.getSession(); String sql=”from Usertable as user where user.username=?”; Query q=session.createQuery(sql); q.setString(0,username); List l=q.list(); Iterator...