例子如下:
有两个类:
class A{
private Session ses;
public A() //构造方法打开session
{
Configuration cfg=new AnnotationConfiguration().configure();
SessionFactory sf=cfg.buildSessionFactory();
this.ses=sf.getCurrentSession();
ses.beginTransaction();}public int fuctionA(Object o){ 此方法为返回一个整数。中间代码省略大部分。
int i=0;
....
ses.createQuery(sql);
....
ses.getTransation().comit();return i ;}
}
class B{
private Session ses;
public B() //构造方法打开session
{
Configuration cfg=new AnnotationConfiguration().configure();
SessionFactory sf=cfg.buildSessionFactory();
this.ses=sf.getCurrentSession();
ses.beginTransaction();}public int fuctionB(Object o){
A a=new A();
int i=a.functionA(o);
ses.getTransation().comit();
return i;
}
}然后在action中写下
B b=new B();
b.functionB(Object o);这样写行不行?也就是在一个session有另外一个session
我写了一个类似的代码。运行很多次都行,但是不知为什么突然不行。连接的是oracle
报错:流已经关闭。
有两个类:
class A{
private Session ses;
public A() //构造方法打开session
{
Configuration cfg=new AnnotationConfiguration().configure();
SessionFactory sf=cfg.buildSessionFactory();
this.ses=sf.getCurrentSession();
ses.beginTransaction();}public int fuctionA(Object o){ 此方法为返回一个整数。中间代码省略大部分。
int i=0;
....
ses.createQuery(sql);
....
ses.getTransation().comit();return i ;}
}
class B{
private Session ses;
public B() //构造方法打开session
{
Configuration cfg=new AnnotationConfiguration().configure();
SessionFactory sf=cfg.buildSessionFactory();
this.ses=sf.getCurrentSession();
ses.beginTransaction();}public int fuctionB(Object o){
A a=new A();
int i=a.functionA(o);
ses.getTransation().comit();
return i;
}
}然后在action中写下
B b=new B();
b.functionB(Object o);这样写行不行?也就是在一个session有另外一个session
我写了一个类似的代码。运行很多次都行,但是不知为什么突然不行。连接的是oracle
报错:流已经关闭。
解决方案 »
- 求救!org.apache.jasper.JasperException: Unable to compile class for JSP
- 网上数据抓取
- SOA cxf 部署问题
- Java 写方法 备份数据库 MySql MSSQL
- HIBERNATE急问!
- 在页面加载的时候如何判断标签元素里面的值?帮我解决了给分 谢谢了。。
- 请问大家现在什么Hibernate工具比较好用呢?
- 小问题:jb2006 开发struts(struts1.2)问题,谢谢了
- java.io.Serializable接口不解?
- 由于工作学需要搭建一个java struts 框架 希望高人指点
- 大虾们帮帮忙 解决解决这个问题。---严重: action: null
- 自己用eclipse打的jar包,在类里可以引用,但是在jsp中引用报cannot be resolved
1. 耗时. buildFactory()是一个非常耗时的动作. Hibernate说的是只要建立一次factory, 以后就可以从这个factory中多次取得session使用. buildFactory时, 会建立数据库连接缓冲池(比如20个连接).
2. buildFactory()后, 没有关闭. 这样每调用一次, 数据库服务器就会建立比如20个连接(B的)+20个连接(A的), 多调用几次后, 数据库服务器就会拒绝连接了.