JPA常用的关闭流的方式是啥?事务管理?还是手动关闭?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JPA常用的关闭流的方式是啥?事务管理?还是手动关闭?相关的知识,希望对你有一定的参考价值。

请加上例子~谢谢

JPA关闭流?你说的是数据库连接释放吧?
JPA使用的数据库管理对象是EntityManager,手动关闭的话就是entityManager.close();大致的结构如下:
EntityManager e=null;
EntityTransaction et = e.getTransaction();
et.begin();
//你的代码
et.commit();
e.close();
当然,你还要加入trycatchfinally哦。
在SSH结构中,一般都采用spring的OpenEntityManagerInViewFilter自动打开和关闭,手动确实容易处理不好有些情况。
参考技术A 一般都会使用数据库连接池技术,数据库连接的释放是事物commit的时候释放的,当然了,如果没有事物就是在sql执行结束后立即释放的数据库连接,em.close()是关闭em的。
事物开始的时候申请到数据库连接,没有事物时在执行sql时申请

Java IO流中先关闭输出流还是先关闭输入流?为什么?

java中需要手动释放的资源bai常见的有以下两个:

流相du关资zhi源

流相关资源一般遵循:

1)先开后关dao,先开的输入流,再开的输出流,通过读取输入流写入输出流中,那么应该先关输出流,再关输入流,但是一般关闭输入输出流操作都是在读写完成后的finally中执行的,所以即使先关输入流,再关输出流也不会任何问题,因为读写操作没有进行了。
2)先关外层,再关内层。如BufferedInputStream包装了一个FileInputStream,那么先

关BufferedInputStream,再关FileInputStream。但要注意的是由于一般处理流持有节点流引用,处理流都会在自己的close方法中去关闭节点流,因此我们只要关闭外层的处理流即可,如果多此一举的关闭节点流反而会报错。如BufferedInputStream包装了FileInputStream,我们只要关闭BufferedInputStream即可

3)只关处理流,不关节点流,原因见上述第二条

流相关文章参考:http://blog.csdn.net/u012250875/article/details/78341874

jdbc相关资源

Connection,PrepareStatement,ResultSet三个资源。这三个资源的获取顺序是:

先获得一个jdbc连接对象Connection,再通过连接对象获得一个sql预处理对象PrepareStatement,如果是查询的话最后还会通过PrepareStatement对象获取一个结果集ResultSet对象,关闭顺序与获取顺序正好相反。先关ResultSet,再关PrepareStatement,最后关Connection。

以上是关于JPA常用的关闭流的方式是啥?事务管理?还是手动关闭?的主要内容,如果未能解决你的问题,请参考以下文章

Java IO流中先关闭输出流还是先关闭输入流?为什么?

呈现和关闭模式小部件流的正确方法是啥?

Spring JPA无法提交jdbc事务的解决办法

在java的exec上关闭流的正确方法是啥?

java 的输入输出流 如果在程序中没有close掉 那么关闭程序之后 流会自动关闭吗?

Win7系统中哪些服务可以关闭