La próximo clase demuestra algunos de los tipos de cosas que podemos realizar con estas clases utilizando Hibernate
package eg
import java.util.ArrayList
import java.util.Calendar
import java.util.Iterator
import java.util.List
import org.hibernate.HibernateException
import org.hibernate.Query
import org.hibernate.Session
import org.hibernate.SessionFactory
import org.hibernate.Transaction
import org.hibernate.cfg.Configuration
import org.hibernate.tool.hbm2ddl.SchemaExport
public class BlogMain {
private SessionFactory _sessions
public void configure() throws HibernateException {
_sessions = new Configuration()
.addClass(Blog.class)
.addClass(BlogItem.class)
.buildSessionFactory()
}
public void exportTables() throws HibernateException {
Configuration cfg = new Configuration()
.addClass(Blog.class)
.addClass(BlogItem.class)
new SchemaExport(cfg).create(true true)
}
public Blog createBlog(String name) throws HibernateException {
Blog blog = new Blog()
blog.setName(name)
blog.setItems( new ArrayList() )
Session session = _sessions.openSession()
Transaction tx = null
try {
tx = session.beginTransaction()
session.persist(blog)
tx.commit()
}
catch (HibernateException he) {
if (tx!=null) tx.rollback()
throw he
}
finally {
session.close()
}
return blog
}
public BlogItem createBlogItem(Blog blog String title String text)
throws HibernateException {
BlogItem item = new BlogItem()
item.setTitle(title)
item.setText(text)
item.setBlog(blog)
item.setDatetime( Calendar.getInstance() )
blog.getItems().add(item)
Session session = _sessions.openSession()
Transaction tx = null
try {
tx = session.beginTransaction()
session.update(blog)
tx.commit()
}
catch (HibernateException he) {
if (tx!=null) tx.rollback()
throw he
}
finally {
session.close()
}
return item
}
public BlogItem createBlogItem(Long blogid String title String text)
throws HibernateException {
BlogItem item = new BlogItem()
item.setTitle(title)
item.setText(text)
item.setDatetime( Calendar.getInstance() )
Session session = _sessions.openSession()
Transaction tx = null
try {
tx = session.beginTransaction()
Blog blog = (Blog) session.load(Blog.class blogid)
item.setBlog(blog)
blog.getItems().add(item)
tx.commit()
}
catch (HibernateException he) {
if (tx!=null) tx.rollback()
throw he
}
finally {
session.close()
}
return item
}
public void updateBlogItem(BlogItem item String text)
throws HibernateException {
item.setText(text)
Session session = _sessions.openSession()
Transaction tx = null
try {
tx = session.beginTransaction()
session.update(item)
tx.commit()
}
catch (HibernateException he) {
if (tx!=null) tx.rollback()
throw he
}
finally {
session.close()
}
}
public void updateBlogItem(Long itemid String text)
throws HibernateException {
Session session = _sessions.openSession()
Transaction tx = null
try {
tx = session.beginTransaction()
BlogItem item = (BlogItem) session.load(BlogItem.class itemid)
item.setText(text)
tx.commit()
}
catch (HibernateException he) {
if (tx!=null) tx.rollback()
throw he
}
finally {
session.close()
}
}
public List listAllBlogNamesAndItemCounts(int max)
throws HibernateException {
Session session = _sessions.openSession()
Transaction tx = null
List result = null
try {
tx = session.beginTransaction()
Query q = session.createQuery(
select blog.id blog.name count(blogItem) +
from Blog as blog +
left outer join blog.items as blogItem +
group by blog.name blog.id +
order by max(blogItem.datetime)
)
q.setMaxResults(max)
result = q.list()
tx.commit()
}
catch (HibernateException he) {
if (tx!=null) tx.rollback()
throw he
}
finally {
session.close()
}
return result
}
public Blog getBlogAndAllItems(Long blogid)
throws HibernateException {
Session session = _sessions.openSession()
Transaction tx = null
Blog blog = null
try {
tx = session.beginTransaction()
Query q = session.createQuery(
from Blog as blog +
left outer join fetch blog.items +
where blog.id = blogid
)
q.setParameter(blogid blogid)
blog = (Blog) q.uniqueResult()
tx.commit()
}
catch (HibernateException he) {
if (tx!=null) tx.rollback()
throw he
}
finally {
session.close()
}
return blog
}
public List listBlogsAndRecentItems() throws HibernateException {
Session session = _sessions.openSession()
Transaction tx = null
List result = null
try {
tx = session.beginTransaction()
Query q = session.createQuery(
from Blog as blog +
inner join blog.items as blogItem +
where blogItem.datetime
)
Calendar cal = Calendar.getInstance()
cal.roll(Calendar.MONTH false)
q.setCalendar(minDate cal)
result = q.list()
tx.commit()
}
catch (HibernateException he) {
if (tx!=null) tx.rollback()
throw he
}
finally {
session.close()
}
return result
}
}
Conozcamos Costa Rica. Limón
-
Hola mi gente hermosa, de viaje por Costa Rica no puedes dejar de visitar
una de las provincias más bellas y paradisíacas de Costa Rica, por supuesto
te h...
Hace 6 años