创建Hibernate的配置文件
创建持久化类
创建对象-关系映射文件
通过Hibernate API编写访问数据库的代码
编译环境 Eclipse 3.1
插件说明 MyEclipse 4.1
数据库 MySql 4.1
版本说明 Hibernate3.0.5
数据库表说明
数据库名: test
表名: user
列名 数据类型 备注
id integer Pramary key 自动增长型
username varchar(45) Not-null
password varchar(45) Not-null
<class>元素指定类和表的映射,它的name属性设定类名,table属性设定表名。
<id>子元素设定持久化类的OID和表的主键的映射。
<property>子元素设定类的属性和表的字段的映射。 <property>子元素包括name、type、column和not-null属性。
1、name属性。
指定持久化类的属性的名字。
2、type属性。
指定Hibernate映射类型。Hibernate类型是Java类型与SQL类型的桥梁。
3、not-null属性
如果<property>元素的not-null属性为true,表明不允许为null,默认为false。
4、column属性指定类的属性映射的表的字段名
Hibernate既不会渗透到上层的对象模型中,也不会渗透到下层数据模型中。
软件开发人员可以独立设计对象模型,不必强迫遵守任何规范。
数据库设计人员可以独立设计数据模型,不必强迫遵守任何规范。
对象—关系映射不依赖于任何程序代码,如果需要修改对象—关系映射,只需修改XML文件,不需要修改任何程序,提高了软件的灵活性,并且使维护更加方便。
Hibernate的初始化步骤
1、创建一个Configuration类的实例,Configuration类的构造方法把默认配置文件(hibernate.properties或hibernate.cfg.xml)中的配置信息读入到内存中:
Configuration config = new Configuration();
2、调用Configuration类的addClass(Customer.class)方法:
config.addClass(Customer.class);
该方法把默认文件路径下的Customer.hbm.xml文件中的映射信息读入到内存中。
3、调用Configuration类的buildSessionFactory()方法:
sessionFactory = config.buildSessionFactory();
save()方法:把Java对象保存到数据库中
update()方法:更新数据库中的Java对象
delete()方法:把Java对象从数据库中删除
load()方法:从数据库中加载Java对象
find()方法:从数据库中查询Java对象(Hibernate3.0之后 废除)
1、Hibernate初始化
2、取得Session对象
3、开始一个事务
4、创建一个Customer对象,使用new Customer()就可以了
5、使用set方法将数据填充到Customer对象中(注意,id属性不需要设置,由Hibernate自动产生)
6、调用Session对象的save()方法将Customer对象中保存到数据库中
7、提交事务
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
List customerList = session.find(“from Customer as c order by c.name asc”);
for (Iterator iter = customerList.iterator(); iter.hasNext;) {
Customer customer = (Customer) iter.next();
/* 输出customer对象 */
}
transaction.commit();
session.close();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
Customer customer = (Customer) session.load(Customer.class, 1);
/* 输出customer对象*/
……
transaction.commit();
session.close();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
Customer customer = (Customer) session.load(Customer.class, 1);
/* 调用customer.setXXX()方法来修改对象 */
session.update(customer);
transaction.commit();
session.close();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
Customer customer = (Customer) session.load(Customer.class, 1);
session.delete(customer);
transaction.commit();
session.close();