开发中中关于sessionFactory的管理问题

我想问一个大家关于sessionFactory实例的创建和管理问题。通过以下方法我可以把在Person表里存入一条记录。
可我不知道一般项目开发中如何新建这个sessionFactory?总不能每个ACTION里都创建一个吧?
还是在第一个loginAction里创建然后通过setAttribute的方式把这个session一直保持着?

[code="java"]package com.chenzq.domain;

import org.hibernate.SessionFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
import org.springframework.transaction.support.TransactionTemplate;

public class Test {

public static void main(String[] args) {

    ApplicationContext ctx = new FileSystemXmlApplicationContext(
            "src/applicationContext.xml");

    SessionFactory sessionFactory = (SessionFactory) ctx
            .getBean("sessionFactory");


    try {
        Person p = new Person();
        p.setUserName("javatest");
        p.setUserAge("27");
        p.setUserPassword("sasdasd");
        p.setUserSex("男");
        PersonDaoImpl PersonDI = new PersonDaoImpl();
        PersonDI.setSessionFactory(sessionFactory);
        PersonDI.save(p);

        System.out.println("OK");
    } catch (Exception ex) {
        ex.printStackTrace();
    }

}

}
[/code]

对于java web项目,spring的启动,sessionFactory工厂的创建都是交给web容器(如tomcat)来管理的,并不需要我们手动来管理。
一般是在web.xml文件中加入如下代码:


contextConfigLocation

/WEB-INF/applicationContext.xml



context


org.springframework.web.context.ContextLoaderServlet


1

对于java项目,一般采用统一的方法来管理sessionFactory,如写一个工具类统一管理。