- 浏览: 55609 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
62500953:
引用引用
jquery1.4+SWFUpload2.2+COS的jquery上传插件 -
yupengcc:
学习一下~
利用java mail 发送邮件 -
seyaa:
xbyy123 写道有没有ie6上面的解决办法 老师 卡死,火 ...
jquery1.4+SWFUpload2.2+COS的jquery上传插件 -
xbyy123:
有没有ie6上面的解决办法 老师 卡死,火狐上好着。
jquery1.4+SWFUpload2.2+COS的jquery上传插件 -
白云飞:
兄弟我用ie7,经常会假死啊,页面死掉,用火狐没事
jquery1.4+SWFUpload2.2+COS的jquery上传插件
使用hibernate也有很久一段时间了,做了点简单的封装:
HibernateUtil
用于分页的Page对象
最后再附上所有的源码 和测试代码及配置文件。
package org.jutil.hibernate.base; import java.io.Serializable; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.Transaction; public abstract class HibernateTemplate<T extends Object> { private static HibernateUtil util = HibernateUtil.getInstance(); /** * 获得接口中泛型的实例 * * @param index * @return */ @SuppressWarnings("unchecked") private Class getGenericType(int index) { Type genType = getClass().getGenericSuperclass(); if (!(genType instanceof ParameterizedType)) { return Object.class; } Type[] params = ((ParameterizedType) genType).getActualTypeArguments(); if (index >= params.length || index < 0) { throw new RuntimeException("Index outof bounds"); } if (!(params[index] instanceof Class)) { return Object.class; } return (Class) params[index]; } /** * 保存对象 * @param entity */ public void save(Object entity) { Session s = null; Transaction tx = null; try { s = util.getSession(); tx = s.beginTransaction(); s.save(entity); tx.commit(); } finally { if (s != null) util.closeSession(s); } } /** * 删除对象 * @param entity */ public boolean delete(Object entity) { Session s = null; Transaction tx = null; try { s = util.getSession(); tx = s.beginTransaction(); s.delete(entity); tx.commit(); return true; }catch (Exception e) { return false; } finally { if (s != null) util.closeSession(s); } } /** * 删除对象 * @param entityName * @param object * @return */ public boolean delete(String entityName, Object object) { Session s = null; Transaction tx = null; try { s = util.getSession(); tx = s.beginTransaction(); s.delete(entityName, object); tx.commit();return true; }catch (Exception e) { return false; } finally { if (s != null) { util.closeSession(s); } } } /** * 更新对象 * @param entity */ public void update(Object entity) { Session s = null; Transaction tx = null; try { s = util.getSession(); tx = s.beginTransaction(); s.update(entity); tx.commit(); } finally { if (s != null) util.closeSession(s); } } /** * get 方式获得对象 * @param id 在hibernate中作为主键的值 * @return */ @SuppressWarnings("unchecked") public T get(Serializable id) { Class clazz = getGenericType(0); Session s = null; try { s = util.getSession(); Object obj = s.get(clazz, id); return (T) obj; } finally { if (s != null) util.closeSession(s); } } /** * get 方式获得对象 * @param id 在hibernate中作为主键的值 * @return */ @SuppressWarnings("unchecked") public T get(Class clazz ,Serializable id) { Session s = null; try { s = util.getSession(); Object obj = s.get(clazz, id); return (T) obj; } finally { if (s != null) util.closeSession(s); } } /** * get 方式获得对象 * @param id 在hibernate中作为主键的值 * @return */ @SuppressWarnings("unchecked") public T get(String entityName,Serializable id) { Session s = null; try { s = util.getSession(); Object obj = s.get(entityName, id); return (T) obj; } finally { if (s != null) util.closeSession(s); } } /** * load 方式获得对象 * @param id 在hibernate中作为主键的值 * @return */ @SuppressWarnings("unchecked") public T load(Serializable id) { Class clazz = getGenericType(0); Session s = null; try { s = util.getSession(); Object obj = s.load(clazz, id); return (T) obj; } finally { if (s != null) util.closeSession(s); } } /** * load 方式获得对象 * @param clazz * @param id 在hibernate中作为主键的值 * @return */ @SuppressWarnings("unchecked") public T load(Class clazz ,Serializable id) { Session s = null; try { s = util.getSession(); Object obj = s.load(clazz, id); return (T) obj; } finally { if (s != null) util.closeSession(s); } } /** * load 方式获得对象 * @param entityName 实体类全名称 * @param id 在hibernate中作为主键的值 * @return */ @SuppressWarnings("unchecked") public T load(String entityName,Serializable id) { Session s = null; try { s = util.getSession(); Object obj = s.load(entityName, id); return (T) obj; } finally { if (s != null) util.closeSession(s); } } /** * 根据(HQL: Hibernate查询语言)得到唯一对象,语句查询结果必须只有一条结果,否则抛出异常 * @param sql 查询语句 * @return T */ @SuppressWarnings("unchecked") public T uniqueResult(String sql){ sqlValidate(sql); Query query = util.getSession().createQuery(sql); return (T) query.uniqueResult(); } /** * 根据(数据库的Native SQL语言)得到唯一对象,语句查询结果必须只有一条结果,否则抛出异常 * @param sql 查询语句 * @return Object[] 封装后的结果 */ public Object[] uniqueResultSQL(String sql){ sqlValidate(sql); SQLQuery query = util.getSession().createSQLQuery(sql); return (Object[]) query.uniqueResult(); } /** * 根据(HQL: Hibernate查询语言)查询所有符合条件的记录,并将结果封装到List<T> 中 * @param sql 查询语句 * @param args 参数 * @return List<T> */ @SuppressWarnings("unchecked") public List<T> findByQuery(String sql, Object... args) { try { sqlValidate(sql); Query query = util.getSession().createQuery(sql); for (int i = 0; i < args.length; i++) { query.setParameter(i, args[i]); } return query.list(); } catch (Exception e) { throw new HibernateException(e.getMessage()); } } /** * 根据(Native SQL查询语言)查询所有符合条件的记录List * @param sql 查询语句 * @param args 参数 * @return List */ @SuppressWarnings("unchecked") public List findBySQLQuery(String sql,Object ... args) { try { sqlValidate(sql); SQLQuery query = util.getSession().createSQLQuery(sql); for (int i = 0; i < args.length; i++) { query.setParameter(i, args[i]); } return query.list(); } catch (Exception e) { throw new HibernateException(e.getMessage()); } } /** *根据(Native SQL查询语言)查询所有符合条件的记录,并将结果封装到List<Object[]> 中 * @param sql 查询语句 * @param args 参数 * @return List<Object[]> 封装后的结果 */ @SuppressWarnings("unchecked") public List<Object[]> findBySQLQueryToList(String sql,Object ... args) { try { sqlValidate(sql); List<Object[]> result = new ArrayList<Object[]>(0); Object[] temp = null; SQLQuery query = util.getSession().createSQLQuery(sql); for (int i = 0; i < args.length; i++) { query.setParameter(i, args[i]); } List r = query.list(); Iterator ite = r.iterator(); while(ite.hasNext()){ temp = (Object[]) ite.next(); System.out.println(temp[0]+":"+temp[1]+":"+temp[2]); result.add(temp); } return result; } catch (Exception e) { throw new HibernateException(e.getMessage()); } } /** * 得到符合条件的总记录数 * @param query * @return Integer */ @SuppressWarnings("unchecked") private Integer getTotalSize(Query query){ List temp = query.list(); Integer totalSize = temp.size(); temp.clear(); temp = null; return totalSize; } /** * 根据(HQL: Hibernate查询语言)查询所有符合条件的记录,封装到Page对象中,page 中list 泛型为 T * @param sql 查询语句 * @param pageNo 页码 * @param pageSize 每页大小 * @param args 参数 * @return Page 封装着分页查询结果对象和一些信息的对象 */ @SuppressWarnings("unchecked") public Page pageQueryByPageNO(String sql,Integer pageNo,Integer pageSize,Object ...args) { try { sqlValidate(sql); Query query = util.getSession().createQuery(sql); for(int i=0;i<args.length;i++){ query.setParameter(i, args[i]); } Integer totalSize = getTotalSize(query); Integer start = (pageNo-1)*pageSize; query.setFirstResult(start); query.setMaxResults(pageNo*pageSize); List<T> data = query.list(); return new Page<T>(start, totalSize,pageSize, data); } catch (Exception e) { throw new HibernateException(e.getMessage()); } } /** * 根据(Native SQL查询语言)查询所有符合条件的记录,封装到Page对象中,page 中list 泛型为 OBject[] * @param sql 查询语句 * @param pageNo 页码 * @param pageSize 每页大小 * @param args 参数 * @return Page 封装着分页查询结果对象和一些信息的对象 */ @SuppressWarnings("unchecked") public Page pageSQLQueryByPageNO(String sql,Integer pageNo,Integer pageSize,Object ...args) { try { sqlValidate(sql); List<Object[]> result = new ArrayList<Object[]>(0); Object[] temp = null; SQLQuery query = util.getSession().createSQLQuery(sql); for (int i = 0; i < args.length; i++) { query.setParameter(i, args[i]); } Integer totalSize = getTotalSize(query); Integer start = (pageNo-1)*pageSize; query.setFirstResult(start); query.setMaxResults(pageNo*pageSize); List r = query.list(); Iterator ite = r.iterator(); while(ite.hasNext()){ temp = (Object[]) ite.next(); result.add(temp); } return new Page<Object[]>(start,totalSize,pageSize, result); } catch (Exception e) { throw new HibernateException(e.getMessage()); } } /** * 验证sql不为null||'' * @param sql */ private void sqlValidate(String sql) { if (sql == null || sql.trim().length() < 0) { throw new RuntimeException("sql sentence is null or is '' "); } } }
HibernateUtil
package org.jutil.hibernate.base; import java.io.File; import java.io.InputStream; import java.io.Serializable; import java.net.URL; import java.util.Properties; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.w3c.dom.Document; @SuppressWarnings("serial") public class HibernateUtil implements Serializable { private static SessionFactory factory = null; private static HibernateUtil util = null; public static HibernateUtil getInstance(){ if(util == null){ util = new HibernateUtil(); } return util; } private HibernateUtil(){ try { Configuration cfg = new Configuration().configure(); factory = cfg.buildSessionFactory(); } catch (Exception e) { e.printStackTrace(); } } public static HibernateUtil getInstance(String resource,String ...files){ if(util == null){ util = new HibernateUtil(resource,files); } return util; } private HibernateUtil(String resource,String ...files){ try { Configuration cfg = new Configuration(); if(files.length>0){ for(String f:files){ cfg.addFile(f); } } factory = cfg.configure(resource).buildSessionFactory(); } catch (Exception e) { e.printStackTrace(); } } public static HibernateUtil getInstance(File configFile,File ...files){ if(util == null){ util = new HibernateUtil(configFile,files); } return util; } private HibernateUtil(File configFile,File ...files){ try { Configuration cfg = new Configuration(); if(files.length>0){ for(File f:files){ cfg.addFile(f); } } factory = cfg.configure(configFile).buildSessionFactory(); } catch (Exception e) { e.printStackTrace(); } } public static HibernateUtil getInstance(URL url,URL ...urls){ if(util == null){ util = new HibernateUtil(url,urls); } return util; } private HibernateUtil(URL url,URL ...urls){ try { Configuration cfg = new Configuration(); for(URL u :urls){ cfg.addURL(u); } factory = cfg.configure(url).buildSessionFactory(); } catch (Exception e) { e.printStackTrace(); } } public static HibernateUtil getInstance(Document document,Document ...docs){ if(util == null){ util = new HibernateUtil(document,docs); } return util; } private HibernateUtil(Document document,Document ...docs){ try { Configuration cfg = new Configuration(); for(Document doc :docs){ cfg.addDocument(doc); } factory = cfg.configure(document).buildSessionFactory(); } catch (Exception e) { e.printStackTrace(); } } public static HibernateUtil getInstance(InputStream inputStream,InputStream ...inputStreams){ if(util == null){ util = new HibernateUtil(inputStream,inputStreams); } return util; } private HibernateUtil(InputStream inputStream,InputStream ...inputStreams){ try { Configuration cfg = new Configuration(); cfg.addInputStream(inputStream); for(InputStream input :inputStreams){ cfg.addInputStream(input); } factory = cfg.configure().buildSessionFactory(); } catch (Exception e) { e.printStackTrace(); } } public static HibernateUtil getInstance(Properties extraProperties,Properties ...properties){ if(util == null){ util = new HibernateUtil(extraProperties,properties); } return util; } private HibernateUtil(Properties extraProperties,Properties ...properties){ try { Configuration cfg = new Configuration(); cfg.addProperties(extraProperties); for(Properties propertie :properties){ cfg.addProperties(propertie); } factory = cfg.configure().buildSessionFactory(); } catch (Exception e) { e.printStackTrace(); } } @SuppressWarnings("unchecked") public static HibernateUtil getInstance(Class persistentClass,Class ...classes){ if(util == null){ util = new HibernateUtil(persistentClass,classes); } return util; } @SuppressWarnings("unchecked") private HibernateUtil(Class persistentClass,Class ...classes){ try { Configuration cfg = new Configuration(); cfg.addClass(persistentClass); for(Class clss :classes){ cfg.addClass(clss); } factory = cfg.configure().buildSessionFactory(); } catch (Exception e) { e.printStackTrace(); } } public SessionFactory getSessionFactory() { return factory; } public Session getSession() { return factory.openSession(); } public void closeSession(Session session) { if (session != null) { if (session.isOpen()) { session.close(); } } } }
用于分页的Page对象
package org.jutil.hibernate.base; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class Page<T> { private static final long serialVersionUID = 2728437513842150372L; private static final int DEFAULT_PAGE_SIZE = 10; private int start; private List<T> data; private long totalCount; private int pageSize = DEFAULT_PAGE_SIZE; public Page() { this(0, 0L, Page.DEFAULT_PAGE_SIZE, ((List<T>) (new ArrayList<T>()))); } public Page(int pageSize) { this(0, 0L, pageSize, ((List<T>) (new ArrayList<T>()))); } public Page(int start, long totalSize, int pageSize, List<T> data) { if (pageSize <= 0 || start < 0 || totalSize < 0L) { } else { this.pageSize = pageSize; this.start = start; totalCount = totalSize; this.data = data; return; } } public long getTotalCount() { return totalCount; } public long getTotalPageCount() { return totalCount % (long) pageSize != 0L ? totalCount/ (long) pageSize + 1L: totalCount/ (long) pageSize; } public void setResult(List<T> data) { this.data = data; } public List<T> getResult() { return data; } public int getCurrentPageNo() { return start / pageSize + 1; } public boolean hasNextPage() { return (long) getCurrentPageNo() < getTotalPageCount(); } public boolean hasPreviousPage() { return getCurrentPageNo() > 1; } public boolean isEmpty() { return data == null || data.isEmpty(); } public int getStartIndex() { return (getCurrentPageNo() - 1) * pageSize; } public int getEndIndex() { int endIndex = getCurrentPageNo() * pageSize - 1; return (long) endIndex < totalCount ? endIndex : (int) totalCount - 1; } protected static int getStartOfPage(int pageNo) { return getStartOfPage(pageNo, 20); } public static int getStartOfPage(int pageNo, int pageSize) { return (pageNo - 1) * pageSize; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } }
最后再附上所有的源码 和测试代码及配置文件。
- HibernateTemplate.rar (7.2 KB)
- 下载次数: 14
相关推荐
GenericHibernateDao 继承 HibernateDao,简单封装 HibernateTemplate 各项功能,简化基于Hibernate Dao 的编写。
Spring的主要特性包括依赖注入(DI)、面向切面编程(AOP)、容器管理的bean以及对其他框架的集成,比如与Hibernate的整合。 **依赖注入(DI)** Spring的核心之一是依赖注入,它允许对象在运行时通过容器获得所需...
本篇将深入探讨Spring与Hibernate的集成,特别是Spring提供的HibernateTemplate,它是Spring对Hibernate的一种封装,简化了数据库操作。我们将围绕以下几点进行详细讲解: 1. **Spring框架基础**: Spring是一个...
HibernateTemplate是Spring对Hibernate的一层封装,提供了事务管理、异常转换等服务。它的主要优点在于提供了一种简洁的API,使得开发人员不必直接处理Hibernate的Session,降低了出错的可能性。 **二、模拟...
**HibernateTemplate** 是 Spring 框架中用于简化 Hibernate 使用的一个工具类。它通过 AOP(面向切面编程)的思想,封装了大量的 CRUD(创建、读取、更新、删除)操作,使得开发者能够更加专注于业务逻辑的实现,而...
Spring和Hibernate的整合可以简化Java应用的开发,通过Spring对Hibernate的封装,开发者无需直接操作SessionFactory和Session,而是使用更简洁、易用的API,同时还能享受到Spring的事务管理能力,提高代码的可维护性...
而`HibernateTemplate`作为Spring框架对Hibernate的一种封装,更是进一步降低了开发难度,提高了开发效率。 #### 二、核心价值:专注业务逻辑 `HibernateTemplate`的主要价值在于让开发者能够将更多的精力聚焦于...
本文将对HibernateTemplate的主要用法进行详细介绍。 #### 二、核心方法解析 在HibernateTemplate中,提供了多种常用的方法来实现数据访问操作(CRUD): 1. **`void delete(Object entity)`**:用于删除一个指定...
`HibernateTemplate`是Spring框架提供的一个工具类,用于简化Hibernate的使用。它封装了许多常见的数据库操作,如增删改查等,同时支持分页查询以及命名查询等功能。使用`HibernateTemplate`可以减少大量模板代码的...
HibernateTemplate类封装了Hibernate的主要类,它提供了很多方便的操作数据的方法。 24.3 Spring对Hibernate的简化 24.3.3 HibernateTemplate概述 HibernateTemplate可将Hibernate的持久层访问模板化。创建...
`HibernateTemplate`是Spring框架对Hibernate ORM(对象关系映射)的一种封装,它简化了与数据库交互的复杂性,而"基于HibernateTemplate的代码自动生成"正是为了进一步提升开发效率而设计的一种技术手段。...
HibernateTemplate是Spring对Hibernate的封装,提供了一套简便的API,用于执行HQL(Hibernate Query Language)查询和CRUD(Create、Read、Update、Delete)操作。 【持久层分页】 在S2SH购物车项目中,持久层的...
2. HibernateTemplate:这是Spring提供的一个辅助类,它封装了SessionFactory的一些常用操作,如保存、更新、删除和查询等。使用HibernateTemplate可以简化代码,避免直接与Session对象打交道,减少出错的可能性。 ...
Spring提供了HibernateTemplate和HibernateInterceptor等工具类,简化了事务管理,并且通过AOP(面向切面编程)实现了声明式事务,使得事务处理更加透明化。此外,Spring还允许我们方便地进行数据源配置,以及自动...
2. **使用 HibernateTemplate**: Spring 为 Hibernate 提供了一个抽象层,即 HibernateTemplate 类,它封装了 Session 的常用操作,如保存、更新、删除和查询等,同时处理了事务管理和异常转换。在 Spring 容器中...
HibernateTemplate是Spring提供的一个方便的类,它简化了与Hibernate的交互,通过预定义的方法封装了常见的Hibernate操作。使用HibernateTemplate时,你需要继承Spring的HibernateDaoSupport类,并注入...
通过Spring对Hibernate的管理,我们可以更好地控制事务、实现解耦,同时降低出错的可能性。此外,Spring的AOP支持使得事务管理更加简单,提高了代码的可测试性。在实际项目中,这种集成方式被广泛应用,是Java EE...
它封装了许多Hibernate的核心API,使得开发者无需关注Hibernate底层细节就能进行数据库操作。此外,`HibernateTemplate`还提供了自动的资源管理和异常转换功能,大大减少了开发过程中的复杂度。 #### 三、使用...
HibernateTemplate封装了常见的Hibernate操作,如查询、保存、更新和删除。HibernateDaoSupport则提供了一个抽象基类,包含HibernateTemplate实例,方便DAO层的开发。 5. **事务管理**: Spring支持编程式和声明式...