Hibernate动态建表,通过hbm.xml配置文件创建数据表,进行数据库操作
2011-09-22 15:57:58
1.利用hibernate的entity-name属性,创建动态模型,不需要生成真实的模型类(.java文件)
2.TCustomer.hbm.xml配置文件也可以根据用户自定义通过模板动态生成,设置各个字段及其类型、长度
3.可以通过hibernate动态模型在运行时动态添加数据表,并对其进行操作
配置文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.bubulah.dao">
<class entity-name="TCustomer" table="T_Customer" schema="FORECAST">
<id name="id"
type="long"
column="ID">
<generator class="sequence"/>
</id>
<property name="name"
column="NAME"
type="string"/>
<property name="address"
column="ADDRESS"
type="string"/>
</class>
</hibernate-mapping>
源代码:
package com.bubulah.tablegenerater;
import java.util.HashMap;
import java.util.Map;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.Environment;
import org.hibernate.tool.hbm2ddl.SchemaUpdate;
public class DynamicModels {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//读取Customer配置文件
Configuration config = new Configuration().configure().setProperty(Environment.FORMAT_SQL, "true").addResource("com/bubulah/dao/TCustomer.hbm.xml");
//通过配置文件建表
SchemaUpdate schemaUpdate = new SchemaUpdate(config);
schemaUpdate.execute(true, true);
//利用动态模型操作数据库
SessionFactory factory = config.buildSessionFactory();
Session s = factory.openSession();
Transaction tx = s.beginTransaction();
// Create a customer
Map david = new HashMap();
david.put("name", "David");
// Create an organization
Map foobar = new HashMap();
foobar.put("name", "Foobar Inc.");
// Link both
david.put("organization", foobar);
// Save both
s.save("TCustomer", david);
//s.save("Organization", foobar);
tx.commit();
s.close();
}
}
2.TCustomer.hbm.xml配置文件也可以根据用户自定义通过模板动态生成,设置各个字段及其类型、长度
3.可以通过hibernate动态模型在运行时动态添加数据表,并对其进行操作
配置文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.bubulah.dao">
<class entity-name="TCustomer" table="T_Customer" schema="FORECAST">
<id name="id"
type="long"
column="ID">
<generator class="sequence"/>
</id>
<property name="name"
column="NAME"
type="string"/>
<property name="address"
column="ADDRESS"
type="string"/>
</class>
</hibernate-mapping>
源代码:
package com.bubulah.tablegenerater;
import java.util.HashMap;
import java.util.Map;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.Environment;
import org.hibernate.tool.hbm2ddl.SchemaUpdate;
public class DynamicModels {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//读取Customer配置文件
Configuration config = new Configuration().configure().setProperty(Environment.FORMAT_SQL, "true").addResource("com/bubulah/dao/TCustomer.hbm.xml");
//通过配置文件建表
SchemaUpdate schemaUpdate = new SchemaUpdate(config);
schemaUpdate.execute(true, true);
//利用动态模型操作数据库
SessionFactory factory = config.buildSessionFactory();
Session s = factory.openSession();
Transaction tx = s.beginTransaction();
// Create a customer
Map david = new HashMap();
david.put("name", "David");
// Create an organization
Map foobar = new HashMap();
foobar.put("name", "Foobar Inc.");
// Link both
david.put("organization", foobar);
// Save both
s.save("TCustomer", david);
//s.save("Organization", foobar);
tx.commit();
s.close();
}
}