您的位置:首页 > 编程语言 > Java开发

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

2013-11-22 15:24 513 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息