开发积累—泛型工具类

前言:使用SSH2中使用的泛型工具类,以前写泛型比较麻烦。今天收集到一个工具类,好东呀!!分享给大家,绝对有用。JAVA版的web应用程序使用。

示例代码:

import org.hibernate.HibernateException;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

/**

*Hibernate工具类,用于获取Session

*@author Li Yongqiang

*/

public class HibernateUtils {

//声明SessionFactory对象

privatestatic SessionFactory factory = null;

//实例化ThreadLocal对象

privatestatic final ThreadLocal<Session> threadLocal = newThreadLocal<Session>();

//实例化Configuration对象

privatestatic Configuration cfg = new Configuration();

//静态块

static{

try{

//加载Hibernate配置文件

cfg.configure();

//实例化SessionFactory

factory= cfg.buildSessionFactory();

}catch (HibernateException e) {

e.printStackTrace();// 打印异常信息

}

}

/**

* 获取Session对象

* @return Session对象

*/

publicstatic Session getSession() {

//从threadLocal中获取Session

Sessionsession = (Session) threadLocal.get();

//判断session是否为空或未处于开启状态

if(session == null || !session.isOpen()) {

if(factory == null) {

rebuildSessionFactory();

}

//从factory开启一个Session

session= (factory != null) ? factory.openSession() : null;

threadLocal.set(session);// 将session放入threadLocal中

}

returnsession;

}

/**

* 获取SessionFactory对象

* @return SessionFactory对象

*/

publicstatic SessionFactory getSessionFactory() {

returnfactory;

}

/**

* 关闭Session

* @param session对象

*/

publicstatic void closeSession() {

//从threadLocal中获取Session

Sessionsession = (Session) threadLocal.get();

//移除threadLocal中的对象

threadLocal.remove();

if(session != null) {

if(session.isOpen()) {

session.close();// 关闭Session

}

}

}

/**

* 创建SessionFactory对象

*/

publicstatic void rebuildSessionFactory() {

try{

//加载Hibernate配置文件

cfg.configure();

//实例化SessionFactory

factory= cfg.buildSessionFactory();

}catch (Exception e) {

e.printStackTrace();// 打印异常信息

}

}

}

使用场景代码;

public class DaoSupport<T> implementsBaseDao<T>{

//泛型的类型

protectedClass<T> entityClass = GenericsUtils.getGenericType(this.getClass());

//Hibernate模板

@Autowired

protectedHibernateTemplate template;

publicHibernateTemplate getTemplate() {

returntemplate;

}

@Override

publicvoid delete(Serializable ... ids) {

for(Serializable id : ids) {

Tt = (T) getTemplate().load(this.entityClass, id);

getTemplate().delete(t);

}

}

/**

* 利用get()方法加载对象,获取对象的详细信息

*/

@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)

publicT get(Serializable entityId) {

return(T) getTemplate().get(this.entityClass, entityId);

}

/**

* 利用load()方法加载对象,获取对象的详细信息

*/

@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)

publicT load(Serializable entityId) {

return(T) getTemplate().load(this.entityClass, entityId);

}

}

如有好的建议,可留言或发至笔者邮箱:[email protected]

开发积累—泛型工具类,布布扣,bubuko.com

时间: 2024-10-14 03:31:31

开发积累—泛型工具类的相关文章

Android开发调试日志工具类[支持保存到SD卡]

直接上代码: package com.example.callstatus; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.net.UnknownHostException; import java.text.SimpleDateFormat; impor

wemall app商城源码android开发MD5加密工具类

wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供技术员参考学习. package com.gzcivil.utils; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgori

Android开发实现HttpClient工具类

在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务.你可以把HttpClient想象成一个浏览器,通过它的API我们可以很方便的发出GET,POST请求(当然它的功能远不止这些). 比如你只需以下几行代码就能发出一个简单的GET请求并打印响应结果: try {         // 创建一个默认的HttpClient         HttpClient httpclient =

android开发,http工具类

android的HttpClient实现简单的get和post请求 [1].[代码] [Java]代码 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66

android开发SD卡工具类(一)

SD卡工具类整理: 1 package com.gzcivil.utils; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 import java.io.InputStream; 9 import java.io.

android开发MD5加密工具类(一)

MD5加密工具类整理: 1 package com.gzcivil.utils; 2 3 import java.io.UnsupportedEncodingException; 4 import java.security.MessageDigest; 5 import java.security.NoSuchAlgorithmException; 6 7 public class MD5Tool { 8 9 public static String md5(String string) {

Android快速开发系列 常用工具类

1.日志工具类L.java package com.way.common.util; import android.util.Log; /** * Log统一管理类 * * @author way * */ public class L { public static boolean isDebug = true;// 是否需要打印bug,可以在application的onCreate函数里面初始化 private static final String TAG = "way"; //

最全面的Java字节byte操作,处理Java基本数据的转换及进制转换操作工具,流媒体及java底层开发项目常用工具类

前言:用于处理Java基本数据的转换及进制转换操作工具 一.实现功能 1.int预byte互转 2.int与byte[]互转 3.short与byte互转 4.short与byte[]互转 5.16位short与byte[]互转 6.long预byte[]互转 7.byte[]与inputstream互转 8.byte与String互转 9.16进制字符转int 10.十进制转2进制 11.byte[]转16进制字符 12.byte[]数组指定位置抽取byte[] 二.代码实现 package

基于protostuff的序列化工具类开发

[toc] 基于protostuff的序列化工具类开发 前言 前面在介绍protostuff的基本使用时(可以参考文章protostuff基本使用),都是针对某个类写的序列化和反序列化方法,显然这样不具有通用性,例如在进行远程过程调用时,传输的对象并不唯一,这时就需要开发具有通用性的序列化工具类,即不管序列化的对象是什么类型,都可以使用该工具类进行序列化.下面就来开发这样的工具类. 基于这个需要,下面会开发两个序列化工具类,一个是不具有缓存功能的SerializationUtil,一个是具有缓存