Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa ejb3与JDBC_Jpa_Jdbc_Ejb 3.0_Jta - Fatal编程技术网

Jpa ejb3与JDBC

Jpa ejb3与JDBC,jpa,jdbc,ejb-3.0,jta,Jpa,Jdbc,Ejb 3.0,Jta,可以将EJB3与JDBC一起使用吗。我在某个地方读到,这是允许的 然而,我听说EJB3实现默认使用JTA。这对JDBC意味着什么?是否仅用于事务支持?这意味着在使用JDBC代码时,JTA用于事务?这意味着即使是本地事务也被实现为全局事务 这是否意味着在EJB3中使用JDBC不是一个好主意?很多人把我指给JPA,但它是一个ORM。我想使用SQL 有什么建议吗?你可以看看这个页面,看起来你确实可以将EJB3与JDBC结合起来 1º 这意味着在使用JDBC代码时,JTA用于事务 及 这意味着即使是本地

可以将EJB3与JDBC一起使用吗。我在某个地方读到,这是允许的

然而,我听说EJB3实现默认使用JTA。这对JDBC意味着什么?是否仅用于事务支持?这意味着在使用JDBC代码时,JTA用于事务?这意味着即使是本地事务也被实现为全局事务

这是否意味着在EJB3中使用JDBC不是一个好主意?很多人把我指给JPA,但它是一个ORM。我想使用SQL


有什么建议吗?

你可以看看这个页面,看起来你确实可以将EJB3与JDBC结合起来

这意味着在使用JDBC代码时,JTA用于事务

这意味着即使是本地事务也被实现为全局事务

EJB容器可以利用资源管理器本地事务作为企业bean的优化技术,而企业bean不需要分布式事务

在使用声明性或编程性事务划分时,最好执行以下操作:

  • 使用企业bean类中的资源注释或企业bean的部署描述符中的资源引用元素声明资源
类似(setter方法或成员字段)

以及在业务逻辑方法中

  • 如果您使用的是声明性事务

    @Resource 
    private UserTransaction ut;
    
    连接conn=ds.getConnection()

  • 如果您使用的是编程事务

  • @Resource 
    private UserTransaction ut;
    
声明setter或成员字段UserTransaction

@Resource 
private UserTransaction ut;

注意以下几点

如果您使用的是有状态会话bean,请在PrePassivate回调方法中执行以下操作

  • 关闭PrePassivate方法中的所有JDBC连接,并将存储连接的实例字段分配为null

关于,

如果您使用的是JPA2,您可以使用
entityManager.unwrap(Connection.class)
来获得实际的连接并与JDBC代码一起使用

例如:

Connection connection = entityManager.unwrap( Connection.class );
try (Statement stmt = connection.createStatement()) {
    stmt.executeUpdate( "INSERT INTO MyTable( name ) VALUES ( 'my name' ) " );
}
这是否意味着在EJB3中使用JDBC不是一个好主意?许多人 给我指出JPA,但它是一个ORM。我想使用SQL


有时这是必要的,因为性能或兼容性问题。我通常使用这种技术来使用数组参数、复杂的Posgis SQL等执行PL/PSQL。

为什么要使用EJB3?您是否将其与从Spring框架获得的结果进行了比较?您将使用哪个版本的J2EE?WebSphere7附带的JavaEE5实现。SpringDAO——简单的JDBC模板似乎不错。事实上,我们只处理一个数据源,即所有本地事务。给出此体系结构的人认为Spring在J2EE和Tomcat等非应用服务器之外没有任何价值主张。回答得好,谢谢。当您说“EJB容器可以使用ResourceManager本地事务作为企业bean的优化技术,而不需要分布式事务”时,这是否意味着这是由EJB3容器自动完成的?这是JEE标准要求还是某些供应商提供的功能?如果它是一个功能,那么默认情况下,它是可配置的还是通常以这种方式完成?@Shaw Hi,虽然不是一个要求,但JEE规范允许在不需要分布式事务时使用它。检查JEE实现是否在不需要分布式事务时使用资源管理器本地事务。这是否意味着这是由EJB3容器自动完成的?EJB容器可以自动完成这项工作,但同样,查看其文档也是一个好主意。