hibernate一个实体类映射多张表

[没看懂,是每次使用前重新调用写一个新配置的意思吗?]

-------------------------------------------------------------------------------------------------------------

最近一个项目中需要有自动生成表的功能进行数据转储,因为ORM用的是hibernate,因为我决定用hibernate实现,不仅操作方便而且易于查询。现将代码贴到此供大家学习交流。

后台的实体类映射基本都是基于注解的,但是动态生成的话还是应该选择配置文件,因为配置文件灵活易操作。

1、首先定义一个模板文件,文本的就行,配置通用属性。

<?xml version="1.0"?>  
<!DOCTYPE hibernate-mapping PUBLIC   
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">  
<hibernate-mapping package="cn.sevenlevel.demo.User">  
    <!--注意entity-name,如果没有此属性的话会报重复映射异常-->  
    <class name="HistoryAuditInfo" table=":tableName" entity-name=":tableName">  
        <id name="id" column="ID" length="32">  
            <generator class="uuid.hex" />  
        </id>  
        <property name="name" column="C_001" />  
        <property name="age" column="C_002" />  
  
    </class>  
</hibernate-mapping> 

2、生成具体的hbm.xml配置文件

然后就是生成配置文件了,比如我要生成一张叫d_001的表,可以使用FileUtils.read()方法读取到内容后然后replaceAll(":tableName","d_001")后write到任意位置。

3、生成表和操作数据

这一步需要借助Hibernate的Configuration类完成,如果集成了spring了的话可使用context.getBean("&sessionFactory")获取。

ApplicationContext ac = new ClassPathXmlApplicationContext(  
        new String[] { "classpath:**\\spring\\session_factory.xml" });  
LocalSessionFactoryBean lsf = (LocalSessionFactoryBean) ac.getBean("&sessionFactory");  
Configuration cfg = lsf.getConfiguration();  
cfg.setProperty(Environment.FORMAT_SQL, "true")  
            .addResource("cn/sevenlevel/test/dynamic.hbm.xml");  
new SchemaUpdate(cfg).execute(true, true);  
SessionFactory sf = cfg.buildSessionFactory();  
Session s = sf.openSession();  
User user=new User("张三",20);  
s.save("d_001",user);  
org.hibernate.Transaction tx = s.beginTransaction();  
tx.commit();  
s.close();  

齐活!

作者邮箱:wangxiaomu@foxmail.com

转载于:https://my.oschina.net/airship/blog/819784

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值