A Hibernate util written by groovy

本文介绍了一个使用Groovy语言实现的Hibernate集成示例,展示了如何配置Hibernate并执行常见的数据库操作,如保存、更新、查询和删除记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hibernate.groovy


import  org.hibernate.cfg.Configuration
import  org.hibernate.Session
import  org.hibernate.SessionFactory
import  org.hibernate.Transaction
import  org.hibernate.tool.hbm2ddl.SchemaUpdate

class  Hibernate {
    def 
static  sessionFactory
   
static  { 
       
try  { 
            Configuration cfg 
=   new  Configuration()
            cfg.configure()            
           
new  SchemaUpdate(cfg).execute( true true )      
            sessionFactory 
=  cfg.buildSessionFactory()    
        } 
catch  (Exception e) {     
            e.printStackTrace()      
        }    
    }    

    Hibernate() {}   

    
private  Session getSession() {    
        
return  sessionFactory.openSession()    
    }    

    Object execute(closure) {       
        def s 
=  getSession()        
            def tr 
=   null         
            def result 
=   null         
            
try  {            
                tr 
=  s.beginTransaction()          
                    result 
=  closure.call(s)       
                    tr.commit()      
            } 
catch  (Exception e) {     
                e.printStackTrace()      
                    
if  (tr  !=   null ) {     
                        tr.rollback()    
                    }        
            } 
finally  {     
                s.close()   
            }        
        
return  result   
    }    

    
void  saveOrUpdate(obj) {
        def saveClosure 
=  { s  ->  s.saveOrUpdate(obj) }      
        execute(saveClosure)    
    }    

    List executeQuery(hql) {     
        execute({ s 
->  s.createQuery(hql).list() })   
    }    

    List executeQuery(hql, parameters) {    
        def query 
=  { s  ->         
            def q 
=  s.createQuery(hql)        
                
if  (parameters  !=   null ) {         
                    
for  (i in  0 ..parameters.size() - 1 ) {       
                        q.setParameter(i, parameters[i])       
                    }            
                }            
            q.list()       
        }        
        execute(query)    
    }    

    def get(clazz, id) {    
        
return  execute({ s  ->  s.get(clazz, id) })   
    }    

    
void  delete(obj) {       
        execute({ s 
->  s.delete(obj) })   
    }
}

Instead of interface, I use Closure for callback

Blogged with Flock

Tags: hibernategroovy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值