java 中静态方法

来源:互联网 发布:杭州电魂网络 编辑:程序博客网 时间:2024/06/05 01:51

有一个这个类的这个方法,静态方式属于类,那么每次调用都会打开session?还是只有一个session呢?

  是否只有一个session取决于代码怎么实现,如果openSession 中单例方式。有判断的话是否是当前session为空,为空则new一个,不为空则返回当前session。



public static Session getSession(){
Configuration configuration=new Configuration().configure();
ServiceRegistry  serviceRegistry=new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
SessionFactory  sessionFactory=configuration.buildSessionFactory(serviceRegistry);
Session session=sessionFactory.openSession();
return session;
 
}


ok,首先静态方法是静态方法,和其里面的内容没有关系。看一下静态方法的相关知识点;


静态方法是属于类的,内存必须为它分配内存空间,这个空间一直由静态方法占用,内存管理器不会由于静态方法没有被调用而将静态方法的存储空间收回,这样如果将所有的方法都声明为静态方法,就会占用大量的内存空间,最后是系统变慢。而普通的成员方法是由对象调用的,内存并不会一直为起分配内存,只有调用的时候才为其分配存储空间,而当其没有被调用时,存储空间就会被内存管理其收回,释放没有用的空间,提高的系统的运行速率!


  什么时候用静态呢?


 要从两方面下手,因为静态修饰的内容有成员变量和函数 。

 什么时候定义为静态 变量(类变量)呢?

        当对象中出现共享数据时,该数据被静态所修饰。

       对象中的特有数据要定义成非静态,存在于堆内存中。


什么时候定义静态函数呢?

  

      当功能内部没有访问到非静态数据(对象特有数据),那么该功能可以定义为静态的。

 



0 0
原创粉丝点击