在EJB3会话Bean中编写JDBC(或)HIBERNATE连接代码并通过EJB3实体Bean(JPA)编写相同的连接代码之间有什么区别。任何人都可以请澄清这一点..通过会话bean和实体bean进行数据库连接的区别
回答
EJB规范支持瞬态和持久对象。瞬态对象被称为会话bean,而持久对象被称为实体bean。
A Session Bean
会话bean是由客户端创建的EJB,通常只存在于单个客户端 - 服务器会话期间。会话bean通常代表客户端执行诸如计算或数据库访问等操作。虽然会话bean可能是事务性的,但如果发生系统崩溃则无法恢复。会话bean对象可以是无状态的,也可以在方法和事务之间保持会话状态。如果会话bean维护一个状态,那么如果必须从内存中删除该对象,则EJB容器将管理此状态。但是,持久数据必须由会话bean对象本身来管理。
容器工具在部署时为会话bean生成附加类。这些工具通过检查其类和接口从EJB体系结构中获取信息。这些信息被用来动态生成两个实现bean的home和remote接口的类。这些类使容器能够调用会话bean上的所有客户端调用。容器也生成一个可序列化的Handle类,它提供了一种在特定生命周期内识别会话bean实例的方法。可以实现这些类,以便在与容器特定的代码混合时执行自定义的操作和功能。
除了这些自定义类以外,每个容器还提供了一个为客户端提供元数据并实现SessionContext接口的类。这可以访问有关调用bean的环境的信息。
An Entity Bean
实体bean是永久数据存储库(如数据库)中维护的持久性数据的对象表示形式。主键标识实体bean的每个实例。实体bean是事务性的,在发生系统崩溃时可以恢复。
实体bean是显式数据或数据集合的表示,例如关系数据库中的行。实体bean方法提供了对bean的数据表示进行操作的过程。一个实体bean是持久的,只要它的数据保留在数据库中就可以存活。
可以通过两种方式创建实体bean:通过在bean的home接口上调用create()方法的客户机的直接操作,或者通过向数据库添加数据的其他操作(bean类型代表。事实上,在包含遗留数据的环境中,甚至可以在部署EJB之前存在实体对象。
实体bean可以实现bean管理的或容器管理的持久性。对于bean管理的持久性,实体bean的实现者通过直接的数据库调用来存储和检索bean管理的信息。该bean可以为这种方法使用Java数据库连接(JDBC)或SQL-Java(SQLJ)。 (会话bean也可以访问他们使用JDBC或SQLJ管理的数据。)这种方法的一个缺点是它使得更容易将bean管理的持久性调整为替代数据源。
对于容器管理的持久性,容器提供者可以使用标准API实现对数据库的访问。容器提供者可以提供工具来映射实体bean的实例变量以调用底层数据库。这种方法使得使用具有不同数据库的实体bean更容易。
两者都允许您编写从数据库中获取数据的Java数据库,但实际编码是非常不同的。
JDBC允许您编写SQL代码
INSERT INTO ...
或
SELECT ... WHERE
然后,您必须编写自己的代码到你的Java对象和JDBC代码之间传输数据。最终会出现很多反复的“将该字段放在该列中”类型的代码。
看看例如link text的例子来得到一种风味。
在JPA/Hibernate中,您只需使用关于哪些表和列与字段对应的说明来注释Java类。大大减少了你需要编写的代码量。
这是因为这个例子中(从this JPA example视为简单:
@Entity
public class Inventory {
@Id
protected long id;
...
public void setItem(Item item) {
this.item = item;
this.id = item.getSKU();
}
...
}
我要说的是会话Bean + JPA比会话Bean + JDBC的努力相当少
- 1. 会话bean和实体bean?
- 2. 实体bean和实体类的区别?
- 3. Netbeans 7.2中的实体类会话Bean
- 4. 通过实体Bean创建数据库表
- 5. EJB2会话bean中的连接处理
- 6. 的NetBeans从数据库实体bean和会话bean 7.0应用程序客户端
- 7. 有状会话Bean与持久实体
- 8. 获取会话Bean实例
- 9. EJB无状态会话bean和有状态会话bean
- 10. 春会话bean
- 11. JSP会话和Bean混淆
- 12. 会话bean和EJB3 vs Spring
- 13. bean和jsf验证注释inisde托管bean vs实体bean
- 14. JPA:无状态会话bean和管理实体
- 15. 使用容器管理实体bean时,bean是否通过容器存储到数据库?
- 16. java会话bean - 重载数据?
- 17. Bean方法与AjaxBehaviorEvent和没有AjaxBehaviorEvent的bean方法的区别?
- 18. 使用会话bean
- 19. auto -instantiate会话bean?
- 20. ADF - 创建会话bean的新实例
- 21. 实体类v实体Bean
- 22. 术语:“实体Bean”与“数据模型”
- 23. java bean和java类的区别?
- 24. 定制标签和Java Bean的区别?
- 25. 实体框架和数据库连接
- 26. '订购'实体bean
- 27. JSF会话bean最佳实践
- 28. 在JSF托管bean的构造函数中访问会话bean数据
- 29. 设计通用CRUD会话Bean
- 30. EJB 2.1实体bean与EJB 3.0实体bean
这些天来,我们使用JPA,而不是Entity Beans – djna 2010-07-26 06:27:16
当然,用于对象关系映射的POJO持久化模型是非常好的。我只是试图清除会话bean和实体bean之间的区别。 – Rupeshit 2010-07-26 06:55:06