Hibernate动态建表,通过hbm.xml配置文件创建数据表,进行数据库操作, 动态模型

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();
        }

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值