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 文件头中多了一个空格。
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