前提:
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依赖较深
分享到:
相关推荐
- 通过**BlazeDS** 提供**Flex** 访问的远程对象接口。 在这个示例程序中,所有的**Spring**、**BlazeDS** 和**Hibernate** 所依赖的Jar包均被复制到**demo_central** 项目的**WebContent/WEB-INF/lib** 目录下,...
根据提供的文件信息,我们可以从标题、描述以及部分可读内容中提炼出几个关键知识点:Hibernate API、Liferay中文API、Struts、Spring框架以及jQuery。接下来将分别对这些知识点进行详细解析。 ### Hibernate API ...
DWR(Direct Web Remoting)是一种Java库,它允许JavaScript在客户端与服务器端进行实时通信,从而实现Web应用中的富客户端功能。DWR的核心概念是将服务器端的Java对象暴露给客户端JavaScript,使得开发者可以像操作...
为了实现多屏同步,我们需要考虑以下几个关键点: 1. **时间戳同步**:每个设备在获取弹幕时,需要获取一个时间戳,确保所有设备在同一时间看到相同的弹幕。 2. **事件监听**:前端需要持续监听服务器的弹幕更新,...
由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...
- 它包括一系列组件,如MessageBrokerServlet、HTTP Flex Session、Remoting服务等,用于实现远程方法调用、消息代理和数据推送。 4. **集成过程**: - 创建一个J2EE Web工程,如`Sample`,作为后端服务的基础。 ...
3. **Hibernate**:作为持久层框架,它简化了数据库操作,提供了一种对象-关系映射(ORM)工具,将Java对象与数据库表进行映射,实现了对数据库的操作无需直接编写SQL语句。Hibernate支持事务、缓存、查询优化等功能...
电子政务是政府机构利用信息技术,特别是互联网技术,提高公共服务效率,增强政府与公众之间的互动,实现政务信息的公开、透明和高效运作的重要手段。在这个领域,基于J2EE(Java 2 Enterprise Edition)的分布式...
企业门户网站是一种专门为企事业单位设计的在线平台,它集成了信息发布、产品展示、在线服务、客户互动等多种功能,旨在提升企业的品牌形象,增强与客户的沟通效率。本项目基于Java技术栈进行开发,提供了完整的源码...
Java在线问答系统是一种基于Web的应用程序,用于提供用户互动式的问答环境。在这个系统中,用户可以提出问题,其他用户或专家则可以给予回答。Struts2框架被广泛应用于构建这样的系统,因为它提供了强大的MVC(Model...
6. **控制层**:扩展Struts的Action,结合Spring的ActionSupport和IOC(Inversion of Control,控制反转)容器,用于调用服务层的方法。 7. **服务层**:采用代理设计模式,服务层可以独立于具体实现,方便替换。...
1. **源代码文件(.java)**:包括业务逻辑、DAO(数据访问对象)、服务接口和服务实现、控制器等类。 2. **配置文件(.xml)**:如Spring的beans.xml、MyBatis的mybatis-config.xml和mapper文件,用于定义bean和...
Java 类加载器分为以下几种: - **启动类加载器(Bootstrap ClassLoader)**:加载 Java 核心库(如 java.lang.* 包下的类),不可被应用程序直接引用。 - **扩展类加载器(Extension ClassLoader)**:加载扩展目录中的...
在新闻管理系统中,Hibernate可以方便地管理新闻数据的增删改查,将新闻对象映射到数据库表,实现数据的持久化存储。 MyNews可能是这个新闻管理系统的主程序或核心模块。它可能包含了系统的主要功能,如新闻的增删...
情境组件模型包括以下几种主要情境: 1. **状态无情景境(Stateless Context)**:适用于不需维护任何会话状态的组件。 2. **事件情景境(Event Context)**:用于处理特定的事件,如用户交互或系统事件。 3. **页面...
8. **反射**:反射机制允许程序在运行时动态地获取类的信息(如类名、方法名)并调用它们,增加了程序的灵活性和可扩展性。 9. **JVM原理**:理解Java虚拟机的工作原理有助于优化代码,例如内存管理(堆、栈、方法...
- 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....