加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Hibernate 泛型DAO实现代码

发布时间:2020-05-24 22:20:56 所属栏目:Java 来源:互联网
导读:Hibernate 泛型DAO实现代码

下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。

脚本之家小编现在分享给大家,也给大家做个参考。

importjava.io.Serializable;
importjava.util.List;

importorg.hibernate.Criteria;
importorg.hibernate.Query;
importorg.hibernate.SQLQuery;
importorg.hibernate.criterion.Criterion;

/**
*
*HibernateGenericDAOInterface
*
*@param<T>	Entity
*@param<PK>PrimaryKey
*/
publicinterfaceGenericDaoIf<T,PKextendsSerializable>{

	/**
	*Getentitybyprimarykey
	*@paramidPrimarykey
	*@returnEntityobject
	*/
	publicTget(finalPKid);
	
	/**
	*Loadentitybyprimarykey
	*@paramidPrimarykey
	*@returnEntityobject
	*/
	publicTload(finalPKid);
	
	/**
	*Removeentityfromsession,changestothisentitywill
	*notbesynchronizedwiththedatabase
	*@paramentityTheobjecttobeevicted
	*/
	publicvoidevict(Tentity);
	
	/**
	*Saveentity
	*@paramentityTheobjecttobesaved
	*@returnThegeneratedidentifier
	*/
	publicPKsave(Tentity);
	
	
	/**
	*Updateentity
	*@paramentityTheobjecttobeupdated
	*/
	publicvoidupdate(Tentity);
	
	/**
	*Saveorupdateentity
	*@paramentityTheobjecttobesaveorupdate
	*/
	publicvoidsaveOrUpdate(Tentity);
	
	/**
	*Updateentity'snot-nullproperty
	*(thisentitymusthaveaprimarykeyproperty"id")
	*@paramentityTheobjecttobeupdated
	*/
	publicvoidupdateSelective(Tentity);
	
	/**
	*Mergeentity
	*@paramentityTheobjecttobemergedintodatabase
	*@returnThepersistentobject
	*/
	publicTmerge(Tentity);

	/**
	*Deleteentity(actually,deletebyprimarykey)
	*@paramentityTheobjecttobedeleted
	*/
	publicvoiddelete(Tentity);

	/**
	*Deleteentitybyprimarykey,firstgetthendelete
	*@paramidPrimarykey
	*/
	publicvoiddelete(PKid);

	/**
	*Findallentities
	*@returnQueryresultlist
	*/
	publicList<T>findAll();

	/**
	*Findentitiesbypage
	*@parampagePagingobject
	*@returnPagingqueryresult,Comeswitharesultslist
	*/
	publicPage<T>findAll(Page<T>page);
	
	/**
	*PresstheHQLQueryobjectlist
	*@paramhql
	*			HQLstatement
	*@paramvalues
	*			Numberofvariableparameters
	*@returnQueryresultlist
	*/
	publicList<T>find(Stringhql,Object...values);
	
	/**
	*PresstheSQLQueryobjectlist
	*@paramsql
	*			SQLstatement
	*@paramvalues
	*			Numberofvariableparameters
	*@returnQueryresultlist
	*/
	publicList<T>findBySql(Stringsql,Object...values);

	/**
	*PresstheHQLquerypaging.
	*@parampage
	*			Pagingparameters.
	*@paramhql
	*			HQLstatement.
	*@paramvalues
	*			Numberofvariableparameters.
	*@returnPagingqueryresults,Comeswitharesultslist.
	*/
	publicPage<T>find(Page<T>page,Stringhql,Object...values);
	
	/**
	*PresstheSQLquerypaging.
	*@parampage
	*			Pagingparameters.
	*@paramsql
	*			SQLstatement.
	*@paramvalues
	*			Numberofvariableparameters.
	*@returnPagingqueryresults,Comeswitharesultslist.
	*/
	publicPage<T>findBySql(Page<T>page,Stringsql,Object...values);

	/**
	*PresstheHQLqueryonlyobject
	*@paramhql
	*			HQLstatement
	*@paramvalues
	*			Numberofvariableparameters
	*@returnAsingleinstancethatmatchesthequery,ornullifthequeryreturnsnoresults
	*/
	publicObjectfindUnique(Stringhql,Object...values);
	
	/**
	*PresstheSQLqueryonlyobject
	*@paramsql
	*			SQLstatement
	*@paramvalues
	*			Numberofvariableparameters
	*@returnAsingleinstancethatmatchesthequery,ornullifthequeryreturnsnoresults
	*/
	publicObjectfindUniqueBySql(Stringsql,Object...values);

	/**
	*AccordingtotheCriterionqueryobjectlist.
	*@paramcriterion
	*NumberofvariableCriterion.
	*@returnQueryresultlist
	*/
	publicList<T>findByCriteria(Criterion...criterion);

	/**
	*AccordingtotheCriterionpagingquery.
	*@parampage
	*Pagingparameters.IncludingthepageSize,firstResult,orderBy,asc,autoCount.
	*WherefirstResultcanbedirectlyspecified,YoucanalsospecifypageNo.autoCountSpecifieswhetherdynamicgetstotalnumberofresults.
	*@paramcriterion
	*Numberofvariablecriterion.
	*@returnPagingqueryresults.Comeswitharesultslistandallqueryparameters.
	*/
	publicPage<T>findByCriteria(Page<T>page,Criterion...criterion);

	/**
	*Findalistofobjectsbyproperty.
	*@parampropertyNamePropertynameoftheentity
	*@paramvaluePropertyvalue
	*@returnQueryresultlist
	*/
	publicList<T>findByProperty(StringpropertyName,Objectvalue);

	/**
	*Finduniqueobjectbyproperty.
	*@parampropertyNamePropertynameoftheentity
	*@paramvaluePropertyvalue
	*@returnAsingleinstancethatmatchesthequery,ornullifthequeryreturnsno
	*/
	publicTfindUniqueByProperty(StringpropertyName,Objectvalue);

	/**
	*Determinetheobject'spropertyvalueisuniquewithinthedatabase.
	*@parampropertyNamePropertynameoftheentity
	*@paramnewValueNewpropertyvalue
	*/
	publicbooleanisPropertyUnique(StringpropertyName,ObjectnewValue);
	
	/**
	*DependingonthequeryfunctionandargumentlisttocreateaQueryobject,Subsequenttoprocessing,Theauxiliaryfunction.
	*@paramqueryStringHQLstring
	*@paramvaluesNumberofvariableparameters
	*@returnQueryobject
	*/
	publicQuerycreateQuery(StringqueryString,Object...values);
	
	/**
	*DependingonthequeryfunctionandargumentlisttocreateaSQLQueryobject,Theauxiliaryfunction.
	*@paramqueryStringSQLstring
	*@paramvaluesNumberofvariableparameters
	*@returnSQLqueryobject
	*/
	publicSQLQuerycreateSQLQuery(StringqueryString,Object...values);
	
	/**
	*AccordingtotheCriterionconditionscreateCriteria,Theauxiliaryfunction.
	*@paramcriterionsNumberofvariablecriterion
	*@returnAcriteria
	*/
	publicCriteriacreateCriteria(Criterion...criterions);

	/**
	*CountHQLqueryresult
	*@paramhqlHQLstatement
	*@paramvaluesNumberofvariableparameters
	*@returnResultcount
	*/
	publiclongcountQueryResult(Stringhql,Object...values);
	
	/**
	*CountSQLqueryresult
	*@paramsqlHQLstatement
	*@paramvaluesNumberofvariableparameters
	*@returnResultcount
	*/
	publiclongcountSQLQueryResult(Stringsql,Object...values);
	
	/**
	*Throughthiscountquerytoobtainthetotalnumberofobjects.
	*@parampagePagingobject
	*@paramcQuerycriteria
	*@returnThetotalnumberofobjectsofthequeryresult.
	*/
	publiclongcountCriteriaResult(Page<T>page,Criteriac);
	
	/**
	*Saveentitiesinbatch
	*@paramentitiesTheobjectstobesaved
	*@parambatchSizeThenumberofeverysessionflush
	*@returnSuccessfulsavecount
	*/
	publicintbatchSave(List<T>entities,intbatchSize);
	
	/**
	*Updateentitiesinbatch
	*@paramentitiesTheobjectstobeupdated
	*@parambatchSizeThenumberofeverysessionflush
	*@returnSuccessfulupdatecount
	*/
	publicintbatchUpdate(List<T>entities,intbatchSize);
	
	/**
	*Saveorupdateentitiesinbatch
	*@paramentitiesTheobjectstobesavedorupdated
	*@parambatchSizeThenumberofeverysessionflush
	*@returnSuccessfulsavecountorupdatecount
	*/
	publicintbatchSaveOrUpdate(List<T>entities,intbatchSize);
	
	/**
	*Updateentities(not-nullproperty)inbatch
	*@paramentitiesTheobjectstobeupdated
	*@parambatchSizeThenumberofeverysessionflush
	*@returnSuccessfulupdatecount
	*/
	publicintbatchUpdateSelective(List<T>entities,intbatchSize);
	
	/**
	*Mergeentitiesinbatch
	*@paramentitiesTheobjectstobemerged
	*@parambatchSizeThenumberofeverysessionflush
	*@returnSuccessfulmergecount
	*/
	publicintbatchMerge(List<T>entities,intbatchSize);
	
	/**
	*Deleteentitiesinbatch
	*@paramentitiesTheobjectstobedeleted
	*@parambatchSizeThenumberofeverysessionflush
	*@returnsuccessfuldeletecount
	*/
	publicintbatchDelete(List<T>entities,intbatchSize);
	
}
importjava.io.Serializable;
importjava.lang.reflect.Field;
importjava.lang.reflect.ParameterizedType;
importjava.util.ArrayList;
importjava.util.List;

importorg.apache.commons.lang.StringUtils;
importorg.hibernate.Criteria;
importorg.hibernate.HibernateException;
importorg.hibernate.Query;
importorg.hibernate.SQLQuery;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.criterion.CriteriaSpecification;
importorg.hibernate.criterion.Criterion;
importorg.hibernate.criterion.Order;
importorg.hibernate.criterion.Projection;
importorg.hibernate.criterion.Projections;
importorg.hibernate.criterion.Restrictions;
importorg.hibernate.impl.CriteriaImpl;
importorg.hibernate.impl.CriteriaImpl.OrderEntry;
importorg.hibernate.transform.ResultTransformer;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importorg.springframework.util.Assert;
importorg.springframework.util.ReflectionUtils;

importcom.alan.mvnapp.mvn_app.dao.GenericDaoIf;
importcom.alan.mvnapp.mvn_app.dao.Page;

/**
*
*HibernateGenericDAOImplementation
*
*@param<T>Entity
*@param<PK>PrimaryKey
*/
publicclassGenericDaoImpl<T,PKextendsSerializable>implementsGenericDaoIf<T,PK>{

	protectedLoggerlogger=LoggerFactory.getLogger(getClass());
	
	protectedSessionFactorysessionFactory;

	protectedClass<?>entityClass;
	
	publicGenericDaoImpl(){
		this.entityClass=(Class<?>)((ParameterizedType)getClass()
				.getGenericSuperclass()).getActualTypeArguments()[0];
	}
	
	publicGenericDaoImpl(SessionFactorysessionFactory,Class<T>entityClass){
		this.sessionFactory=sessionFactory;
		this.entityClass=entityClass;
	}
	
	@SuppressWarnings("unchecked")
	publicTget(finalPKid){
		return(T)sessionFactory.getCurrentSession().get(entityClass,id);
	}
	
	@SuppressWarnings("unchecked")
	publicTload(finalPKid){
		return(T)sessionFactory.getCurrentSession().load(entityClass,id);
	}
	
	publicvoidevict(Tentity){
		sessionFactory.getCurrentSession().evict(entity);
	}
	
	@SuppressWarnings("unchecked")
	publicPKsave(Tentity){
		Assert.notNull(entity);
		PKpk=(PK)sessionFactory.getCurrentSession().save(entity);
		logger.info("saveentity:{}",entity);
		returnpk;
	}
	
	publicvoidupdate(Tentity){
		Assert.notNull(entity);
		sessionFactory.getCurrentSession().update(entity);
		logger.info("updateentity:{}",entity);
	}
	
	publicvoidsaveOrUpdate(Tentity){
		Assert.notNull(entity);
		sessionFactory.getCurrentSession().saveOrUpdate(entity);
		logger.info("saveorupdateentity:{}",entity);
	}
	
	publicvoidupdateSelective(Tentity){
		Assert.notNull(entity);
		Field[]fields=entity.getClass().getDeclaredFields();
		List<String>params=newArrayList<String>();
		List<Object>values=newArrayList<Object>();
		for(Fieldfield:fields){
			StringfieldName=field.getName();
			field.setAccessible(true);
			Objectvalue=ReflectionUtils.getField(field,entity);
			if(value!=null){
				params.add(fieldName);
				values.add(value);
			}
		}
		if(!params.isEmpty()){
			StringBuffersb=newStringBuffer("update"
					+entityClass.getSimpleName()+"set");
			for(inti=0;i<params.size();i++){
				sb.append(params.get(i)+"=?");
				if(i<params.size()-1){
					sb.append(",");
				}
			}
			FieldpkField=ReflectionUtils.findField(entityClass,"id");
			Assert.notNull(pkField);
			pkField.setAccessible(true);
			sb.append("whereid=?");
			values.add(ReflectionUtils.getField(pkField,entity));
			createQuery(sb.toString(),values.toArray()).executeUpdate();
			logger.info("updateentityselecitive:{}"+entity);
		}
	}
	
	@SuppressWarnings("unchecked")
	publicTmerge(Tentity){
		Assert.notNull(entity);
		Tt=(T)sessionFactory.getCurrentSession().merge(entity);
		logger.info("mergeentity:{}",entity);
		returnt;
	}

	publicvoiddelete(Tentity){
		Assert.notNull(entity);
		sessionFactory.getCurrentSession().delete(entity);
		logger.info("deleteentity:{}",entity);
	}

	publicvoiddelete(PKid){
		Assert.notNull(id);
		delete(get(id));
	}

	publicList<T>findAll(){
		returnfindByCriteria();
	}

	publicPage<T>findAll(Page<T>page){
		returnfindByCriteria(page);
	}
	
	@SuppressWarnings("unchecked")
	publicList<T>find(Stringhql,Object...values){
		return(List<T>)createQuery(hql,values).list();
	}
	
	@SuppressWarnings("unchecked")
	publicList<T>findBySql(Stringsql,Object...values){
		return(List<T>)createSQLQuery(sql,values).addEntity(entityClass).list();
	}

	@SuppressWarnings("unchecked")
	publicPage<T>find(Page<T>page,Object...values){
		Assert.notNull(page);
		if(page.isAutoCount()){
			page.setTotalCount(countQueryResult(hql,values));
		}
		Queryq=createQuery(hql,values);
		if(page.isFirstSetted()){
			q.setFirstResult(page.getFirst());
		}
		if(page.isPageSizeSetted()){
			q.setMaxResults(page.getPageSize());
		}
		page.setResult((List<T>)q.list());
		returnpage;
	}
	
	@SuppressWarnings("unchecked")
	publicPage<T>findBySql(Page<T>page,Object...values){
		Assert.notNull(page);
		if(page.isAutoCount()){
			page.setTotalCount(countSQLQueryResult(sql,values));
		}
		SQLQueryq=createSQLQuery(sql,values);
		if(page.isFirstSetted()){
			q.setFirstResult(page.getFirst());
		}
		if(page.isPageSizeSetted()){
			q.setMaxResults(page.getPageSize());
		}
		page.setResult((List<T>)q.addEntity(entityClass).list());
		returnpage;
	}

	publicObjectfindUnique(Stringhql,Object...values){
		returncreateQuery(hql,values).uniqueResult();
	}
	
	publicObjectfindUniqueBySql(Stringsql,Object...values){
		returncreateSQLQuery(sql,values).addEntity(entityClass).uniqueResult();
	}

	@SuppressWarnings("unchecked")
	publicList<T>findByCriteria(Criterion...criterion){
		return(List<T>)createCriteria(criterion).list();
	}

	@SuppressWarnings("unchecked")
	publicPage<T>findByCriteria(Page<T>page,Criterion...criterion){
		Assert.notNull(page);
		Criteriac=createCriteria(criterion);
		if(page.isAutoCount()){
			page.setTotalCount(countCriteriaResult(page,c));
		}
		if(page.isFirstSetted()){
			c.setFirstResult(page.getFirst());
		}
		if(page.isPageSizeSetted()){
			c.setMaxResults(page.getPageSize());
		}
		if(page.isOrderBySetted()){
			if(page.getOrder().toUpperCase().equals("AES")){
				c.addOrder(Order.asc(page.getOrderBy()));
			}else{
				c.addOrder(Order.desc(page.getOrderBy()));
			}
		}
		page.setResult((List<T>)c.list());
		returnpage;
	}

	@SuppressWarnings("unchecked")
	publicList<T>findByProperty(StringpropertyName,Objectvalue){
		Assert.hasText(propertyName);
		return(List<T>)createCriteria(Restrictions.eq(propertyName,value)).list();
	}

	@SuppressWarnings("unchecked")
	publicTfindUniqueByProperty(StringpropertyName,Objectvalue){
		Assert.hasText(propertyName);
		return(T)createCriteria(Restrictions.eq(propertyName,value)).uniqueResult();
	}
	
	publicbooleanisPropertyUnique(StringpropertyName,ObjectnewValue){
		if(newValue==null)returnfalse;
		try{
			Objectobj=findUniqueByProperty(propertyName,newValue);
			returnobj==null;
		}catch(HibernateExceptione){
			returnfalse;
		}
	}

	publicQuerycreateQuery(StringqueryString,Object...values){
		Assert.hasText(queryString);
		QueryqueryObject=sessionFactory.getCurrentSession().createQuery(queryString);
		if(values!=null){
			for(inti=0;i<values.length;i++){
				queryObject.setParameter(i,values[i]);
			}
		}
		returnqueryObject;
	}
	
	publicSQLQuerycreateSQLQuery(StringqueryString,Object...values){
		Assert.hasText(queryString);
		SQLQueryqueryObject=sessionFactory.getCurrentSession().createSQLQuery(queryString);
		if(values!=null){
			for(inti=0;i<values.length;i++){
				queryObject.setParameter(i,values[i]);
			}
		}
		returnqueryObject;
	}
	
	publicCriteriacreateCriteria(Criterion...criterions){
		Criteriacriteria=sessionFactory.getCurrentSession().createCriteria(entityClass);
		for(Criterionc:criterions){
			criteria.add(c);
		}
		returncriteria;
	}
	
	publiclongcountQueryResult(Stringhql,Object...values){
		hql=hql.replaceAll("[Ff][Rr][Oo][Mm]","from");
		Stringstr=hql.toLowerCase();
		if(!StringUtils.contains(str,"groupby")
				&&!StringUtils.contains(str,"union")
				&&!StringUtils.contains(str,"minus")
				&&!StringUtils.contains(str,"intersect")
				&&!StringUtils.contains(StringUtils.substringAfter(str,"from"),"(")
				){
			str="selectcount(*)from"+StringUtils.substringAfter(hql,"from");
			return((Number)createQuery(hql,values).iterate().next()).longValue();
		}else{
			thrownewHibernateException("notsupportthisHQL:"+hql);
		}
	}
	
	publiclongcountSQLQueryResult(Stringsql,Object...values){
		Stringstr=sql.toLowerCase();
		StringbeforeFrom=StringUtils.substringBefore(str,"from");
		if(StringUtils.countMatches(beforeFrom,"(")
				!=StringUtils.countMatches(beforeFrom,")")
				||StringUtils.contains(str,"groupby")
				||StringUtils.contains(str,"union")
				||StringUtils.contains(str,"minus")
				||StringUtils.contains(str,"intersect")){
			str="selectcount(*)from("+sql+")astmp";
		}else{
			str="selectcount(*)from"+
					StringUtils.substringAfter(str,"from");
		}
		Objectret=createSQLQuery(str,values).uniqueResult();
		return(ret==null?0:((Number)ret).longValue());
	}

	@SuppressWarnings("unchecked")
	publiclongcountCriteriaResult(Page<T>page,Criteriac){
		CriteriaImplcimpl=(CriteriaImpl)c;
		
		//FirstProjection,ResultTransformer,OrderByout,EmptyafterathreeCountoperations
		Projectionprojection=cimpl.getProjection();
		ResultTransformertransformer=cimpl.getResultTransformer();
		
		List<CriteriaImpl.OrderEntry>orderEntries=null;
		try{
			FieldorderEntriesField=cimpl.getClass().getDeclaredField("orderEntries");
			orderEntriesField.setAccessible(true);
			orderEntries=(List<OrderEntry>)ReflectionUtils.getField(
					orderEntriesField,cimpl);
			ReflectionUtils.setField(
					orderEntriesField,cimpl,
					newArrayList<OrderEntry>());
		}catch(Exceptione){
			logger.error("Notmaythrowanexception:{}",e.getMessage());
		}

		//DoCountquery
		longtotalCount=(Long)c.setProjection(Projections.rowCount())
				.uniqueResult();
		if(totalCount<1)
			return-1;

		//WilltheProjectionandOrderBybeforeconditionsbacktogoback
		c.setProjection(projection);

		if(projection==null){
			c.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
		}
		if(transformer!=null){
			c.setResultTransformer(transformer);
		}

		try{
			FieldorderEntriesField=cimpl.getClass().getDeclaredField("orderEntries");
			orderEntriesField.setAccessible(true);
			ReflectionUtils.setField(orderEntriesField,orderEntries);
		}catch(Exceptione){
			logger.error("Notmaythrowanexception:{}",e.getMessage());
		}

		returntotalCount;
		
	}
	
	privateinttuneBatchSize(intbatchSize){
		if(batchSize<20){
			batchSize=20;
		}elseif(batchSize>200){
			batchSize=200;
		}
		returnbatchSize;
	}
	
	publicintbatchSave(List<T>entities,intbatchSize){
		Assert.notEmpty(entities);
		batchSize=tuneBatchSize(batchSize);
		intcount=0;
		Sessionsession=sessionFactory.getCurrentSession();
		for(inti=0;i<entities.size();i++){
			session.save(entities.get(i));
			if(i%batchSize==0||i==entities.size()-1){
				session.flush();
				session.clear();
			}
			count++;
		}
		returncount;
	}
	
	publicintbatchUpdate(List<T>entities,intbatchSize){
		Assert.notEmpty(entities);
		batchSize=tuneBatchSize(batchSize);
		intcount=0;
		Sessionsession=sessionFactory.getCurrentSession();
		for(inti=0;i<entities.size();i++){
			session.update(entities.get(i));
			if(i%batchSize==0||i==entities.size()-1){
				session.flush();
				session.clear();
			}
			count++;
		}
		returncount;
	}
	
	publicintbatchSaveOrUpdate(List<T>entities,intbatchSize){
		Assert.notEmpty(entities);
		batchSize=tuneBatchSize(batchSize);
		intcount=0;
		Sessionsession=sessionFactory.getCurrentSession();
		for(inti=0;i<entities.size();i++){
			session.saveOrUpdate(entities.get(i));
			if(i%batchSize==0||i==entities.size()-1){
				session.flush();
				session.clear();
			}
			count++;
		}
		returncount;
	}
	
	publicintbatchUpdateSelective(List<T>entities,intbatchSize){
		Assert.notEmpty(entities);
		batchSize=tuneBatchSize(batchSize);
		intcount=0;
		Sessionsession=sessionFactory.getCurrentSession();
		for(inti=0;i<entities.size();i++){
			updateSelective(entities.get(i));
			if(i%batchSize==0||i==entities.size()-1){
				session.flush();
				session.clear();
			}
			count++;
		}
		returncount;
	}
	
	publicintbatchMerge(List<T>entities,intbatchSize){
		Assert.notEmpty(entities);
		batchSize=tuneBatchSize(batchSize);
		intcount=0;
		Sessionsession=sessionFactory.getCurrentSession();
		for(inti=0;i<entities.size();i++){
			session.merge(entities.get(i));
			if(i%batchSize==0||i==entities.size()-1){
				session.flush();
				session.clear();
			}
			count++;
		}
		returncount;
	}
	
	publicintbatchDelete(List<T>entities,intbatchSize){
		Assert.notEmpty(entities);
		batchSize=tuneBatchSize(batchSize);
		intcount=0;
		Sessionsession=sessionFactory.getCurrentSession();
		for(inti=0;i<entities.size();i++){
			session.delete(entities.get(i));
			if(i%batchSize==0||i==entities.size()-1){
				session.flush();
				session.clear();
			}
			count++;
		}
		returncount;
	}

}

以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读