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




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值