`
- 浏览:
110951 次
- 性别:
- 来自:
武汉
-
Hibernate自定义表单完全解决方案(无需重置SessionFactory) (三)
最后是总结测试,写个junit 搞定 代码如下:
Java代码
-
package com.mit.cooperate.core.hibernate;
-
-
import junit.framework.TestCase;
-
-
import java.net.URL;
-
import java.util.ArrayList;
-
-
import org.apache.commons.beanutils.PropertyUtils;
-
-
import org.hibernate.Session;
-
import org.hibernate.cfg.Configuration;
-
import org.hibernate.SessionFactory;
-
import org.hibernate.tool.hbm2ddl.SchemaExport;
-
import org.hibernate.impl.SessionFactoryImpl;
-
import org.hibernate.mapping.PersistentClass;
-
import org.hibernate.Transaction;
-
-
import com.mit.cooperate.core.asm.*;
-
import com.mit.cooperate.core.asm.render.*;
-
-
public class HibernateTest extends TestCase {
-
-
private Configuration config;
-
private SessionFactory factory;
-
-
public void setUp()
-
{
-
URL url = this.getClass().getResource("/com/mit/cooperate/core/hibernate/hibernate.cfg.xml");
-
config = new Configuration().configure(url);
-
factory = config.buildSessionFactory();
-
}
-
-
public void testBuild() throws Exception
-
{
-
//持久类对象描述
-
RenderClass rc = new RenderClass();
-
ArrayList list = new ArrayList();
-
-
RenderProperty property = new RenderProperty();
-
//添加主键
-
property.setName("oid");
-
property.setField("oid");
-
property.setLength(new Integer(15));
-
property.setPrimary(true);
-
property.setType(Long.class.getName());
-
property.setSequence("SEQ_PERSON");
-
-
list.add(property);
-
//添加一个name字段
-
property = new RenderProperty();
-
property.setName("name");
-
property.setType(String.class.getName());
-
property.setField("name");
-
property.setLength(new Integer(20));
-
-
list.add(property);
-
-
rc.setProperties(list);
-
//类名
-
rc.setClassName("com.mit.test.Person");
-
rc.setTableName("person");
-
//开始生成class
-
POBuildUtil util = new POBuildUtil();
-
util.build(rc.getClassName(),"E:\\cpc\\source\\cooperateCore\\com\\mit\\test\\Person.class",list);
-
//实例化一个person
-
Object person = Class.forName("com.mit.test.Person").newInstance();//hbmcls.newInstance();
-
-
//开始生成hbm.xml
-
FreemarkerRender render = new FreemarkerRender();
-
render.render(rc, Templates.TEMPLATE_HIBERNATE3, "E:\\cpc\\source\\cooperateCore\\com\\mit\\test\\person.hbm.xml");
-
URL url = this.getClass().getResource("/com/mit/test/person.hbm.xml");
-
config.addURL(url);
-
//更新hibernate.cfg.xml
-
HibernateUtil.updateHbmCfg( this.getClass().getResource("/com/mit/cooperate/core/hibernate/hibernate.cfg.xml"), "com/mit/test/person.hbm.xml");
-
-
PersistentClass model = config.getClassMapping("com.mit.test.Person");
-
//sessionFactory哪下子,快接纳person爷爷进去
-
((SessionFactoryImpl)factory).addPersistentClass(model, config.getMapping());
-
//生成数据库
-
SchemaExport export = new SchemaExport(config,((SessionFactoryImpl)factory).getSettings());
-
export.execute(true, true,false,true);
-
//测试一下,随便给个名字什么的
-
PropertyUtils.setProperty(person, "name", "chenzhi");
-
Session session = factory.openSession();
-
Transaction tran = session.beginTransaction();
-
try
-
{
-
//保存
-
session.save(person);
-
tran.commit();
-
}
-
catch (Exception e)
-
{
-
e.printStackTrace();
-
tran.rollback();
-
}
-
finally
-
{
-
session.close();
-
}
-
}
-
-
public void tearDown()
-
{
-
factory.close();
-
}
-
-
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Hibernate是一款强大的对象关系映射(ORM)框架,它允许开发者使用Java对象来操作数据库,而无需直接编写SQL语句。在Hibernate中,自定义查询是扩展其功能的重要方式,能够帮助我们实现更复杂的数据库交互需求。本文...
4. **配置SessionFactory**:在Hibernate配置文件(hibernate.cfg.xml)中,添加自定义类型的相关配置。 ```xml <hibernate-configuration> ... <!-- 添加自定义类型 --> ... </hibernate-configuration...
HibernateSessionFactory.java
这篇博客"JPA + Hibernate 3 CRUD操作历史审计日志的解决方案"将深入探讨如何实现这一需求。 首先,我们需要理解JPA和Hibernate的基础概念。JPA定义了一组用于持久化Java对象的API,它允许开发者通过面向对象的方式...
在Java的持久化框架Hibernate中,`SessionFactory`是核心组件之一,它负责管理数据库会话并提供对象-关系映射(ORM)的功能。本篇文章将深入探讨`SessionFactory`的使用,以及如何创建和操作它。 `SessionFactory`...
本篇文章将深入探讨`HibernateSessionFactory`及其在Hibernate中的作用,以及如何使用它来实现增、删、查、改(CRUD)操作。 `SessionFactory`是Hibernate的核心组件,它是线程安全的,负责管理数据库连接和会话。`...
Spring会自动将SessionFactory注入到Repository中,无需手动创建Session。在上述代码中,`getCurrentSession()`返回了一个与当前线程绑定的Session,简化了事务管理。 此外,为了处理事务,还需要在Spring配置文件...
在此背景下,《很不错的Hibernate解决方案》一文介绍了一种基于Hibernate框架的物流系统持久层解决方案,旨在解决当前物流系统中存在的问题,并提升整体性能。 #### Hibernate框架简介 Hibernate是一种开放源代码的...
Session s= HibernateSessionFactory.getSession(); 就是Hibernate的工具java类
hibernate中的SessionFactoryhibernate中的SessionFactoryhibernate中的SessionFactory
用于获得Session会话及关闭Session会话
总结一下,实现Spring与Hibernate的多数据库解决方案,主要涉及以下几个步骤: 1. 配置多个数据源,分别用于读和写操作。 2. 创建与数据源相对应的Hibernate SessionFactory,确保数据流向正确的数据库。 3. 可选地...
标题提到的"新Hibernate SessionFactory().getCurrentSession()猫腻"揭示了一个常见的使用误区或者说是陷阱,即不正确地使用SessionFactory的getCurrentSession()方法。这篇文章可能探讨了这个方法在实际应用中的...
在Java Web开发中,Spring和Hibernate是两个非常重要的框架,它们常常被联合使用来处理数据库操作,如增、删、改、查(CRUD)。本文将深入探讨如何利用Spring与Hibernate整合,通过两种不同的方式来实现这些基本操作...
### Hibernate 实现动态表查询的多种解决方案 #### 一、前言 在使用Hibernate进行数据库操作时,我们经常需要根据不同的需求对不同的表进行查询。特别是在处理多表、多库等复杂场景时,如何实现动态表查询就显得尤...
在本文中,我们将深入探讨如何将Spring Boot框架与Hibernate ORM集成,特别是在不使用JPA(Java Persistence API)的情况下。Spring Boot以其便捷的自动配置和简化Java应用开发而广受欢迎,而Hibernate作为Java领域...