Hibernate上路_22-从表自动创建Java类

1.数据库准备:

CREATE DATABASE db_hibernate  CHARACTER SET utf8;
USE db_hibernate;
-- 注释:用户表
CREATE TABLE tb_user(
	u_id INT PRIMARY KEY AUTO_INCREMENT, 	#ID:整型,主键,自动增长
	u_name VARCHAR(20), 					#姓名:字符串,最长20
	u_phone INT								#电话:整型
);
-- 注释:订单表
CREATE TABLE tb_order(
	o_id INT PRIMARY KEY AUTO_INCREMENT, 	#ID:整型,主键,自动增长
	o_name VARCHAR(20), 					#商品:字符串,最长20
	o_price DOUBLE,	 						#价格:双精度
	u_id INT,								#外键:关联用户表的id列
	CONSTRAINT u_id_fk FOREIGN KEY (u_id) REFERENCES tb_user(u_id)		#创建外键关联
);


2.创建数据库视图:

    1)选择数据库视图:


    2)创建新连接:


    3)配置MySql连接:

配置结束,Finish即可。


    4)连接MySql:

右键点击连接,Open connection ... 。


3.使用Hibernate反转引擎:

    1)在MyEclipse创建空web项目:

返回MyEclipse Java Enterprise perspective视图。


    2)使用hibernate能力支持:

右键项目,MyEclipse,Add Hibernate Capabilities... 。


    3)选择hibernate版本:

本文使用myeclipse版本是10.7。


    4)创建配置文件:


    5)配置MySql连接:


    6)配置完成:


    7)自动添加jar包并创建hibernate.cfg.xml文件:


4.从表单到POJO类:

    1)先合理创建包路径:


    2)反转表单:

切换到数据库视图,右键表单,Hibernate Reverse Enginering 。


    3)配置创建目录和文件:


    4)查看:


5.测试:

    1)插入数据代码:

package cn.cvu.test;
import cn.cvu.domain.TbOrder;
import cn.cvu.domain.TbUser;

public class TestHibernateGenerate {
	public void test() {
		Configuration configuration = new Configuration().configure();
		ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
				.applySettings(configuration.getProperties()).buildServiceRegistry();
		SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
		Session session = sessionFactory.openSession();
		Transaction transaction = session.beginTransaction();
		
		//MyEclipsePersistenceTools自动创建的POJO实体类TbUser
		TbUser user = new TbUser();	
		user.setUName("Akon");
		user.setUPhone(10086);
		//PersistenceTools自动创建的POJO实体类TbOrder
		TbOrder order1 = new TbOrder();
		order1.setOName("茄子");
		order1.setOPrice(25.3d);
		//订单2
		TbOrder order2 = new TbOrder();
		order2.setOName("黄瓜");
		order2.setOPrice(3.2d);
		
		user.getTbOrders().add(order1);
		user.getTbOrders().add(order2);
		order1.setTbUser(user);
		order2.setTbUser(user);
		
		session.save(user);
		session.save(order1);
		session.save(order2);
		
		transaction.commit();
		session.close();
		sessionFactory.close();
	}
}


    2)报错:

org.hibernate.InvalidMappingException: Unable to read XML 
        at cn.cvu.test.TestHibernateGenerate.test(TestHibernateGenerate.java:17) 对应代码 

        Configuration configuration = new Configuration().configure(); 
exception: http://www.jboss.org/dtd/hibernate/hibernate-mapping-3.0.dtd%20 
        at org.dom4j.io.SAXReader.read(SAXReader.java:484)
        at org.hibernate.internal.util.xml.MappingReader.readMappingDocument(MappingReader.java:78)
... 34 more 

这个错误实质是加载完 hibernate.cfg.xml ,再加载 POJO.hbm.xml 时出错,并非加载不到 hibernate.cfg.xml 。错误原因是工具自动生成的 POJO.hbm.xml 文件头中多了一个空格。


    3)更正POJO.hbm.xml后测试:



- end
 

转载于:https://my.oschina.net/vigiles/blog/178314

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值