`
penghao122
  • 浏览: 363910 次
  • 性别: Icon_minigender_1
  • 来自: 广东珠海
社区版块
存档分类
最新评论

利用模板方式写一个管理hibernate 中session的方法

阅读更多
package com.t48.hr.util;

import org.hibernate.Session;
import org.hibernate.Transaction;
import com.t48.hr.util.HBSessionFactory;

public abstract class TransManager {
  public Session sess;	
  public abstract void process() throws Exception;

  public void execute() throws Exception
  {
	 Transaction trans=null;
	 try {
		sess=HBSessionFactory.getCurrentSession();
		trans=sess.beginTransaction();
		process();
		trans.commit();
	} catch (Exception e) {
		trans.rollback();
		e.printStackTrace();
		throw e;
		// TODO: handle exception
	}
	finally{
		HBSessionFactory.closeCurrentSession();
	}
  }

}
分享到:
评论
6 楼 strongkill 2007-03-06  
prameter1沒有聲明啊?


解決辦法
在transManager中加入
public Object prameter1;


5 楼 penghao122 2007-02-23  
   static  TParamDAO dao = new TParamDAO();//生成一个dao实例   
    static Session session = null;   


这个是我没有删掉的代码.忘记看了...

我也不知道,线程怎么处理
4 楼 penghao122 2007-02-23  
...学习了
3 楼 jamesby 2007-02-23  
代码要简化,类似demo一样的东西,查询,update只需要一个就可以了!

粗粗看了看,发现有如下代码:

    static  TParamDAO dao = new TParamDAO();//生成一个dao实例   
    static Session session = null;


Session为static不会产生线程安全问题?不过好象这个session从来没有使用。

另外看到楼主有如下代码:
    public static List serarchid(final Long name){   
        ArrayList list=null;   
        try{   
            TransManager delete = new TransManager(){   
                public void process() throws Exception {   
                       
                    prameter1  =(List)sess.createQuery("from TParam where code="+name).list();   
                       
                    
                }   
            };   
        delete.execute();   
        list=(ArrayList)delete.prameter1;   
       
     } 


既然在process里面如此使用session,还是建议将process声明成如下方式:
process(HibernateSession sess)  throws Exception


一点粗浅见解!
2 楼 bencode 2007-02-23  
嘿嘿.异常处理上有点问题,重构成下面的:

package com.t48.hr.util;   
  
import org.hibernate.Session;   
import org.hibernate.Transaction;   
import com.t48.hr.util.HBSessionFactory;   
  
public abstract class TransManager {   
  public Session sess;     
  public abstract void process() throws Exception;   
  
  public void execute() throws Exception   
  {   
     Transaction trans=null;
     sess=HBSessionFactory.getCurrentSession();   // 移到这里
     try {   
        trans=sess.beginTransaction();   
        process();   
        trans.commit();   
    } catch (Exception e) { 
        if (trans != null) {    // 要判断
            trans.rollback();
        }
        e.printStackTrace();   
        throw e;   
        // TODO: handle exception   
    }   
    finally{
        HBSessionFactory.closeCurrentSession();   
    }   
  }   
  
}  
1 楼 penghao122 2007-02-23  
package com.t48.hr.admin.bo;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.*;

import com.t48.hr.util.*;
import com.t48.hr.sys.dao.TParamDAO;
import com.t48.hr.sys.vo.TParam;
import com.t48.hr.sys.vo.TParamId;
import com.t48.hr.util.HBSessionFactory;

/*
 * 
 * 基本参数业务处理逻辑
 * */
public class baseBO {

	static  TParamDAO dao = new TParamDAO();//生成一个dao实例
	static Session session = null;
	//增加基本参数的大类一条记录
	public static void insertbase(final TParam info){
		try {
			
		TransManager demo = new TransManager(){

			public void process() throws Exception {
				
			 dao.save(info, sess);
			}
		};
		demo.execute();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
//	根据code返回一个集合
	public static List getFormNameList(long code){
		List list = null;
		try
		{
			Session session =HBSessionFactory.getCurrentSession();
			//根椐code号查出id号相等的字段
		    String again ="from TParam where id.code = "+code;
			Query againquery = session.createQuery(again);
			list = againquery.list();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		finally{
			session.close();
		}
		return list;
	}
	//修改一条记录
	public static void updatebase(){
		
		
	}
	//删除一条记录
	public static int deletesplit(Long f){
		
		System.out.println("I come to delete f "+f);
		int flag=0;
		 final TParam demo = new TParam();
	     final TParamId id = new TParamId() ;
	     id.setId(f);
	     id.setCode(new Long(0));
	     demo.setId(id);
	     try{
	    		TransManager delete = new TransManager(){
	    			public void process() throws Exception {
	    			    dao.delete(demo, sess);   			 
	    			}
	    		};
	    	delete.execute();
	    	flag=1;
	     }
	     catch(Exception e){
	    	 flag=0;
	    	 e.printStackTrace();
	     }
	     return flag;
	 
	}

	//查询取ID最大值
	public static Long selectbaseID(){
		
		Long baseID = new Long(0);
		try{
    		TransManager delete = new TransManager(){
    			public void process() throws Exception {
    				
    				prameter1 =  sess.createQuery("select max(t.id.id) from TParam t").uniqueResult();
    			    System.out.println("dsfsdfsdf");
  	   			 
    			}
    		};
    	delete.execute();
    	baseID=(Long)delete.prameter1;
     }
     catch(Exception e){
  
    	 e.printStackTrace();
     }
		
	return baseID;
		
	}
	
	//子项删除业务
	public static void deletechild(final TParam id){

		try{
    		TransManager delete = new TransManager(){
    			public void process() throws Exception {
    				
    			    sess.delete(id);
    			    System.out.println("dsfsdfsdf");
  	   			 
    			}
    		};
    	delete.execute();
    
     }
     catch(Exception e){
  
    	 e.printStackTrace();
     }
		
	}
	public static List serarchid(final Long name){
		ArrayList list=null;
		try{
    		TransManager delete = new TransManager(){
    			public void process() throws Exception {
    				
    				prameter1  =(List)sess.createQuery("from TParam where code="+name).list();
    				
  	   			 
    			}
    		};
    	delete.execute();
    	list=(ArrayList)delete.prameter1;
    
     }
     catch(Exception e){
  
    	 e.printStackTrace();
     }
     return list;
		
	}
	/*基本参数的子项删除之后,返回一个集合*/
	public static  List getBasecontent(final Long id){
		
		ArrayList list=null;
		try{
    		TransManager delete = new TransManager(){
    			public void process() throws Exception {
    				
    				prameter1  =(List)sess.createQuery("from TParam where id.code ="+id).list();
    				
  	   			 
    			}
    		};
    	delete.execute();
    	list=(ArrayList)delete.prameter1;
    
     }
     catch(Exception e){
  
    	 e.printStackTrace();
     }
         
	return list;	
	}
	
	
	
}


利用一个bo来使用

相关推荐

    springMvc+Hibernate实现的一个问题管理系统

    本文将深入探讨如何使用SpringMvc和Hibernate这两个强大的框架,构建一个功能完善的问题管理系统。首先,我们来看看SpringMvc和Hibernate的核心概念及其在项目中的作用。 SpringMvc是Spring框架的一个模块,专门...

    使用Hibernate实现任务管理系统

    在本项目中,“使用Hibernate实现任务管理系统”,我们探讨了如何利用Hibernate这一强大的对象关系映射(ORM)框架来构建一个高效、易于维护的任务管理应用程序。该系统具备两种身份登录功能,分别为主管和职员,...

    struts+hibernate超市管理系统

    这个“Struts+Hibernate超市管理系统”是一个典型的MVC(Model-View-Controller)架构示例,它展示了如何将这两个框架有效地整合在一起,为超市管理提供一套完整的解决方案。 首先,Struts是一个基于MVC设计模式的...

    Struts2+spring+hibernate项目模板例子

    总之,“Struts2+spring+hibernate项目模板例子”是一个完整的Java Web项目实例,展示了这三大框架如何协同工作,为开发者提供了一个学习和实践的基础平台。通过深入理解和实践这个模板,开发者可以更好地掌握企业级...

    hibernate 数据库操作方法

    Spring框架提供了一种声明式事务管理,可以简化事务处理,使得在Spring应用中使用Hibernate变得非常方便。以下是如何在Spring配置中集成Hibernate: 1. 配置数据源: 在Spring的配置文件中定义数据源,例如使用...

    hibernate实现动态SQL查询

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作与业务逻辑解耦,从而提高开发效率。本篇文章主要探讨如何利用Hibernate实现动态SQL查询,结合XML配置和FREEMARKER模板...

    基于struts+hibernate+spring的用户管理系统

    在这个系统中,每个用户实体类(如User)都会对应数据库中的一个用户表,通过Hibernate的Session接口进行CRUD(创建、读取、更新、删除)操作。 Spring框架在这其中起到了胶水的作用,它将Struts和Hibernate集成在...

    Hibernate中,利用Criteria查询容器实现sql的写法

    通过Session的createCriteria()方法,我们可以创建一个Criteria对象。 3. **Restrictions**: 这个类提供了各种限制条件,如等于、不等于、大于、小于等,用于添加查询条件。例如,我们可以使用Restrictions.eq()来...

    Hibernate延迟加载以及利用Spring

    这里使用了`getHibernateTemplate()`方法,这是一个Spring提供的模板类,简化了Hibernate的操作。 2. **业务逻辑层实现**: ```java public class EmpServiceImpl implements IEmpService { private EmpDAO ...

    hibernate增删改查和动态sql

    1. **Hibernate ORM框架:** Hibernate是一个流行的Java ORM框架,它提供了一种在Java应用中管理和持久化对象到关系数据库的方法,消除了直接操作SQL的需要。 2. **CRUD操作:** - **创建(Create):** 通过`...

    Hibernate 中文手册 3.1.2.pdf

    Hibernate 是一个开源的对象关系映射 (ORM) 工具,它极大地简化了 Java 应用程序中数据的持久化操作。对象关系映射是一种编程技术,用于在关系数据库和对象之间建立一个桥梁,使得开发者可以使用面向对象的方式来...

    spring+hibernate 框架实例

    而 Hibernate 则是一个 ORM(对象关系映射)框架,它简化了数据库操作,使得开发者可以使用 Java 对象来处理数据库事务。 Spring 框架的核心特性包括: 1. **依赖注入(Dependency Injection, DI)**:Spring 使用...

    Hibernate中文手册 Spring中文参考手册

    接着,实体类的创建是关键,每个实体类代表数据库中的一个表,通过注解或XML映射文件定义其属性与表字段的对应关系。此外,Hibernate的Session接口是数据操作的主要入口,提供保存、更新、删除和检索对象的方法。...

    hibernate整理

    例如,它可以包含一个静态方法`getSessionFactory()`用于获取预创建的SessionFactory,以及`openSession()`方法来创建和返回一个新的Session实例。这样的工具类有利于在整个应用中统一管理和使用SessionFactory和...

    dwr+spring+hibernate模板.zip

    - 整合DWR与Hibernate:DWR可以调用Spring管理的bean,这些bean可以进一步调用Hibernate的Session进行数据库操作。通过这种方式,DWR可以直接与数据库交互,实现动态的数据展示和更新。 总结起来,DWR+Spring+...

    struts和hibernate的一个小项目

    本项目结合这两个框架,构建了一个小型的客户关系管理(CRM)系统,旨在帮助初学者理解如何将它们整合到实际应用中。 Struts是Apache软件基金会的开源项目,它为Java Web应用程序提供了一个基于MVC设计模式的框架。...

    用Netbeans开发Hibernate项目

    【标题】"用Netbeans开发Hibernate项目"是一个关于利用Netbeans IDE进行Hibernate应用程序开发的教程。这个主题旨在帮助Java初学者掌握如何在Netbeans环境中设置和操作Hibernate框架,以便更高效地进行数据库交互。 ...

    一个很好的struts+hibernate源代码示例

    在"一个很好的struts+hibernate源代码示例"中,我们可以学习到如何将这两个框架有效地整合在一起,实现Web应用的数据管理和用户交互。首先,`testFrame.sql`文件通常包含了示例项目的数据库初始化脚本,这可能包括...

    hibernate入门实例操作步骤

    创建一个`SessionFactory`实例,它是Hibernate的核心,负责管理Session。通过`SessionFactory`创建`Session`,`Session`是与数据库交互的入口。 6. **操作数据库** 使用`Session`进行CRUD操作,如`save()`、`...

    Spring+hibernate整合源代码

    Spring 是一个全面的后端应用程序框架,提供了依赖注入、面向切面编程、数据访问、事务管理等多种功能。Hibernate 则是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,将 Java 对象与数据库表进行映射,...

Global site tag (gtag.js) - Google Analytics