Java EE假设有一个称为领域模型的东西。领域模型由表示实体的对象组成,其中实体是具有与业务相关的标识的事物。(例如,如果您在银行工作,您的领域可能涉及帐户、客户、持股和贷款等事物)。
这里是Bauer和King的Java Persistence with Hibernate中描述领域模型的一句话引用:
3.1.1. 分析业务领域无论如何,思路是您拥有由持久实体组成的领域模型。有某种配置(注释或XML文件或其他)将实体及其属性映射到数据库中的表和列,并将实体之间的关系映射起来。有一个对象关系映射器(JPA是实现ORM的标准,Hibernate是其中一个实现),它知道如何在数据库表示和对象图表示之间来回转换数据,以便开发人员可以操作对象而不是数据库行。
对于那些认为业务逻辑不应该成为领域模型的一部分的人,这里是来自Java Persistence with Hibernate书中3.1.2节的另一个引用:
领域模型中的实体应该封装状态和行为。例如,用户实体应定义客户的姓名和地址以及计算物品运费(针对该特定客户)所需的逻辑。领域模型是一个丰富的对象模型,具有复杂的关联、交互和继承关系。关于使用面向对象技术处理领域模型的有趣而详细的讨论可以在《企业应用架构模式》(Fowler, 2003)或《领域驱动设计》(Evans, 2003)中找到。显然,Hibernate开发者认为它是一种可行的替代方案,尽管在典型的企业开发中似乎不是常见的方法。
数据源
关联的持久性单元
的一部分,为其提供连接池。 EntityManager
实例管理。 EntityManager
负责管理与关联的持久化单元
所有实体的内存表示; 至少是目前从数据库加载的实体。 通常每个线程(~每个http请求)都有一个 EntityManager
实例。容器管理的EntityManager
(即通过@PersistenceContext
注入)时,容器将自动在所有涉及持久性单元操作的bean(控制器/服务/ dao /等)之间传播事务上下文。@transactionnal
注释时,它会打开事务,并且在当前方法调用期间执行的任何bean的每个方法都将成为同一事务的一部分。 事务将在方法执行结束时提交(或回滚)。)这是一个领域对象的状态。
持久化实例在数据库中具有表示和标识符值。它可能刚刚被保存或加载,但根据定义,它处于会话范围内。
例如,在Java ORM 框架Hibernate中查看对象的状态。
免责声明:这仅供参考。
@Component
(只是为了举例)。另一方面,领域对象用于表示应用程序中的实体。 - Luiggi Mendoza