A Hibernate util written by groovy
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.