`
17studio
  • 浏览: 197821 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

hibernate对象实现对象互动(如接口调用)的几种方法

阅读更多
前提:
1、hibernate对象(即本身是需要可以存储的)
2、接口实现需要状态

方法总结如下:
1、对原有的对象扩展字段
2、对扩展属性建立新表,把hibernate对象和新表做关联,hibernate对象负责管理属性
3、对扩展属性建立新表,使用外部类管理hibernate对象和扩展表之间的关系,实现接口

方法1示例:

interface Ownable {
  public setOwner(id);
}

class ItemEntity implements Ownable {
    @OneToOne
    private Owner owner;
 
    public setOwner(Integer id) {
       owner = dao.getClass(Owner.class, id);
    }
}


方法2示例:

interface Ownable {
  public setOwner(id);
}

class ItemEntity implements Ownable {
    @OneToOne
    private RelationEntity relation;
 
    public setOwner(Integer id) {
       relation.setOwnerId(id);
       relation.setThisId(this.getId());
    }
}

class RelationEntity {
  private ownerid;
  private itemid;
}

class OwnerEntity {
  private id;

  public buy(Ownable item) {
    item.setOwner(this.getId());
  }
}

void main() {
  OwnerEntity owner;
  owner.buy(new Item());
}

方法3示例:

class OwnableService () {
  public buy(Owner owner, Item item, RelationEntity relation);
}

上述三种方法应用于场景Owner.hasItem()时:
1. 方法1不能满足
2. 方法2、3可以满足

上述三种方法应用于场景Owner.getItemPrice(item)且item没有price字段时:
1. 方法1不能满足
2. 方法2、3可以满足

上述三种方法应用于场景List<Ownable> Owner.getBuyableItems()时:
1. 方法1、2不能满足
2. 方法3可以满足

方法2和方法3的比较:
1、前者需要修改pojo,后者不需要
2、前者的设计复杂度较高,对hibernate依赖较深
分享到:
评论

相关推荐

    Flex、Spring、Hibernate 集成

    - 通过**BlazeDS** 提供**Flex** 访问的远程对象接口。 在这个示例程序中,所有的**Spring**、**BlazeDS** 和**Hibernate** 所依赖的Jar包均被复制到**demo_central** 项目的**WebContent/WEB-INF/lib** 目录下,...

    hibernateAPI,JQeury,liferay中文API

    根据提供的文件信息,我们可以从标题、描述以及部分可读内容中提炼出几个关键知识点:Hibernate API、Liferay中文API、Struts、Spring框架以及jQuery。接下来将分别对这些知识点进行详细解析。 ### Hibernate API ...

    DWR与界面开发

    DWR(Direct Web Remoting)是一种Java库,它允许JavaScript在客户端与服务器端进行实时通信,从而实现Web应用中的富客户端功能。DWR的核心概念是将服务器端的Java对象暴露给客户端JavaScript,使得开发者可以像操作...

    ssh整合Ajax实现多屏同步弹幕效果

    为了实现多屏同步,我们需要考虑以下几个关键点: 1. **时间戳同步**:每个设备在获取弹幕时,需要获取一个时间戳,确保所有设备在同一时间看到相同的弹幕。 2. **事件监听**:前端需要持续监听服务器的弹幕更新,...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...

    ssh+flex+blazed

    - 它包括一系列组件,如MessageBrokerServlet、HTTP Flex Session、Remoting服务等,用于实现远程方法调用、消息代理和数据推送。 4. **集成过程**: - 创建一个J2EE Web工程,如`Sample`,作为后端服务的基础。 ...

    租房网管理系统代码

    3. **Hibernate**:作为持久层框架,它简化了数据库操作,提供了一种对象-关系映射(ORM)工具,将Java对象与数据库表进行映射,实现了对数据库的操作无需直接编写SQL语句。Hibernate支持事务、缓存、查询优化等功能...

    电子政务-基于J2EE分布式技术的电网故障诊断系统.zip

    电子政务是政府机构利用信息技术,特别是互联网技术,提高公共服务效率,增强政府与公众之间的互动,实现政务信息的公开、透明和高效运作的重要手段。在这个领域,基于J2EE(Java 2 Enterprise Edition)的分布式...

    企业门户网站.zip

    企业门户网站是一种专门为企事业单位设计的在线平台,它集成了信息发布、产品展示、在线服务、客户互动等多种功能,旨在提升企业的品牌形象,增强与客户的沟通效率。本项目基于Java技术栈进行开发,提供了完整的源码...

    java在线问答系统

    Java在线问答系统是一种基于Web的应用程序,用于提供用户互动式的问答环境。在这个系统中,用户可以提出问题,其他用户或专家则可以给予回答。Struts2框架被广泛应用于构建这样的系统,因为它提供了强大的MVC(Model...

    Java软件工程师求职简历(J2EE方向).doc

    6. **控制层**:扩展Struts的Action,结合Spring的ActionSupport和IOC(Inversion of Control,控制反转)容器,用于调用服务层的方法。 7. **服务层**:采用代理设计模式,服务层可以独立于具体实现,方便替换。...

    基于ssm+Java的教学仪器设备销售网站.zip

    1. **源代码文件(.java)**:包括业务逻辑、DAO(数据访问对象)、服务接口和服务实现、控制器等类。 2. **配置文件(.xml)**:如Spring的beans.xml、MyBatis的mybatis-config.xml和mapper文件,用于定义bean和...

    30种java技术框架图

    Java 类加载器分为以下几种: - **启动类加载器(Bootstrap ClassLoader)**:加载 Java 核心库(如 java.lang.* 包下的类),不可被应用程序直接引用。 - **扩展类加载器(Extension ClassLoader)**:加载扩展目录中的...

    新闻管理系统

    在新闻管理系统中,Hibernate可以方便地管理新闻数据的增删改查,将新闻对象映射到数据库表,实现数据的持久化存储。 MyNews可能是这个新闻管理系统的主程序或核心模块。它可能包含了系统的主要功能,如新闻的增删...

    Seam_Reference_Guide

    情境组件模型包括以下几种主要情境: 1. **状态无情景境(Stateless Context)**:适用于不需维护任何会话状态的组件。 2. **事件情景境(Event Context)**:用于处理特定的事件,如用户交互或系统事件。 3. **页面...

    LearnerAcademy

    8. **反射**:反射机制允许程序在运行时动态地获取类的信息(如类名、方法名)并调用它们,增加了程序的灵活性和可扩展性。 9. **JVM原理**:理解Java虚拟机的工作原理有助于优化代码,例如内存管理(堆、栈、方法...

    使用JSP和Servlet技术构建BBS论坛系统(设计文档含代码)

    - Hibernate或MyBatis:对象关系映射(ORM)框架,简化数据库操作。 - Tomcat或Jetty:作为Servlet容器,运行和部署Web应用。 通过阅读"使用JSP和Servlet技术构建BBS论坛系统.pdf",读者将深入了解如何结合这些技术...

    运动社区网站代码

    2. **数据存储**:Java通常会结合关系型数据库如MySQL或非关系型数据库如MongoDB,通过JDBC或ORM框架如Hibernate进行数据操作。 3. **前端界面**:可能使用了HTML、CSS和JavaScript,结合Bootstrap、Vue.js或React....

Global site tag (gtag.js) - Google Analytics