Jakarta ee 通过会话bean和实体bean进行数据库连接的区别

Jakarta ee 通过会话bean和实体bean进行数据库连接的区别,jakarta-ee,Jakarta Ee,在EJB3会话Bean中编写JDBC(或)HIBERNATE连接代码与通过EJB3实体Bean(JPA)编写相同的连接代码有什么区别。任何人都可以澄清这一点。EJB规范既支持瞬时对象,也支持持久对象。瞬态对象称为会话bean,持久对象称为实体bean A Session Bean 会话bean是由客户机创建的EJB,通常仅在单个客户机-服务器会话期间存在。会话bean通常代表客户端执行计算或数据库访问等操作。虽然会话bean可能是事务性的,但如果发生系统崩溃,它是不可恢复的。会话bean对

在EJB3会话Bean中编写JDBC(或)HIBERNATE连接代码与通过EJB3实体Bean(JPA)编写相同的连接代码有什么区别。任何人都可以澄清这一点。

EJB规范既支持瞬时对象,也支持持久对象。瞬态对象称为会话bean,持久对象称为实体bean

  A Session Bean
会话bean是由客户机创建的EJB,通常仅在单个客户机-服务器会话期间存在。会话bean通常代表客户端执行计算或数据库访问等操作。虽然会话bean可能是事务性的,但如果发生系统崩溃,它是不可恢复的。会话bean对象可以是无状态的,也可以跨方法和事务维护会话状态。如果会话bean维护一个状态,那么如果必须从内存中删除该对象,EJB容器将管理该状态。但是,持久数据必须由会话bean对象本身管理

容器的工具在部署时为会话bean生成额外的类。这些工具通过检查EJB体系结构的类和接口来获取信息。此信息用于动态生成两个类,它们实现bean的主接口和远程接口。这些类使容器能够在会话bean上的所有客户端调用中进行调解。该容器还生成一个可序列化的句柄类,它提供了一种在特定生命周期内标识会话bean实例的方法。当与特定于容器的代码混合时,可以实现这些类来执行定制的操作和功能

除了这些自定义类之外,每个容器还提供一个类,该类向客户端提供元数据并实现SessionContext接口。这提供了对调用bean的环境信息的访问

An Entity Bean
实体bean是在永久数据存储(如数据库)中维护的持久数据的对象表示。主键标识实体bean的每个实例。实体bean是事务性的,在系统崩溃时可以恢复

实体bean是显式数据或数据集合的表示,例如关系数据库中的行。实体bean方法提供对bean的数据表示进行操作的过程。实体bean是持久的,只要其数据保留在数据库中,它就可以生存

实体bean可以通过两种方式创建:通过在bean的主接口上调用create()方法的客户端的直接操作,或者通过向bean类型表示的数据库添加数据的其他操作。事实上,在具有遗留数据的环境中,实体对象可能在部署EJB之前就已经存在

实体bean可以实现bean管理的持久性或容器管理的持久性。对于bean管理的持久性,实体bean的实现者通过直接数据库调用存储和检索bean管理的信息。bean可以使用Java数据库连接(JDBC)或SQL Java(SQLJ)来实现此方法。(会话bean也可以访问它们使用JDBC或SQLJ管理的数据。)这种方法的一个缺点是,它使bean管理的持久性更难适应其他数据源


对于容器管理的持久性,容器提供者可以使用标准API实现对数据库的访问。容器提供者可以提供工具,将实体bean的实例变量映射到对底层数据库的调用。这种方法使实体bean更容易与不同的数据库一起使用。

EJB规范既支持瞬时对象,也支持持久对象。瞬态对象称为会话bean,持久对象称为实体bean

  A Session Bean
会话bean是由客户机创建的EJB,通常仅在单个客户机-服务器会话期间存在。会话bean通常代表客户端执行计算或数据库访问等操作。虽然会话bean可能是事务性的,但如果发生系统崩溃,它是不可恢复的。会话bean对象可以是无状态的,也可以跨方法和事务维护会话状态。如果会话bean维护一个状态,那么如果必须从内存中删除该对象,EJB容器将管理该状态。但是,持久数据必须由会话bean对象本身管理

容器的工具在部署时为会话bean生成额外的类。这些工具通过检查EJB体系结构的类和接口来获取信息。此信息用于动态生成两个类,它们实现bean的主接口和远程接口。这些类使容器能够在会话bean上的所有客户端调用中进行调解。该容器还生成一个可序列化的句柄类,它提供了一种在特定生命周期内标识会话bean实例的方法。当与特定于容器的代码混合时,可以实现这些类来执行定制的操作和功能

除了这些自定义类之外,每个容器还提供一个类,该类向客户端提供元数据并实现SessionContext接口。这提供了对调用bean的环境信息的访问

An Entity Bean
实体bean是在永久数据存储(如数据库)中维护的持久数据的对象表示。主键标识实体bean的每个实例。实体bean是事务性的,在系统崩溃时可以恢复

实体bean是显式数据或数据集合的表示,例如关系数据库中的行。实体bean方法提供过程
@Entity
public class Inventory {
    @Id
    protected long id;
    ...
    public void setItem(Item item) {
        this.item = item;
        this.id = item.getSKU();
    }
    ...
}