一、导入jar包 ( 以Hibernate 3.2.5 为例 需要导入以下jar包 )
hibernate3.jar , antlr.jar , cglib.jar , asm.jar , commons-collections.jar ,commons-logging.jar , jta.jar , dom4j.jar
二、添加配置文件 hibernate.cfg.xml或者hibernate.properties,
这两个文件的作用一样,提供一个即可,推荐XML格式。
配置如下(以oracle为例):
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Oracle10g数据库方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!-- 连接数据库驱动 -->
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<!-- 登录数据库用户名 -->
<property name="hibernate.connection.username">scott</property>
<!-- 登录数据库密码 -->
<property name="hibernate.connection.password">tiger</property>
<!-- 连接数据库的url-->
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<!-- 是否在控制台显示SQL语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 格式良好的显示SQL语句 -->
<property name="hibernate.format_sql">true</property>
<!-- 每次生成DDL语句,create表示每次都创建表,一般使用update修改表,使用update如果表不存在则创建表-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 加载映射文件填持久化类的映射文件路径如:bean/Dept.hbm.xm -->
<mapping resource="bean/Dept.hbm.xm" />
</session-factory>
</hibernate-configuration>
三、添加实体类和映射文件
注意:命名格式为 对应的类名.hbm.xml 例如:Dept.hbm.xml。
演示如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<!-- <class>元素 指定类和表的映射,name指定类名(类的全路径包括包名),
table指定表名,该类在数据库中的表名,例如:T_DEPT -->
<class name="bean.Dept" table="T_DEPT" >
<!-- 用来定义表的主键,name表示,该类中属性名,例如:deptno
column表示,该属性在数据库表中的列名 例如:DEPTNO
type表示,对应的数据类型,例如:int -->
<id name="deptno" column="DEPTNO" type="int" >
<!-- 主键生成策略,increment表示由hibernate生成的自增主键-->
<generator class="increment"></generator>
</id>
<!-- 映射列,name表示,该类中属性名,例如:dname,
column表示,该属性在数据库表中的列名,例如:DNAME
type表示,对应的数据类型,例如:string,
not-null="true" 表示该列在数据库中不能非空
length="30" 表示该列在数据库中的长度 -->
<property name="dname" column="DNAME" type="string" not-null="true" length="30" ></property>
</class>
</hibernate-mapping>
操作代码解释
/*注意: 读取配置文件文件,这里只需要读取一个,你配置的是哪个文件就用哪种方式读取*/
//表示读取hibernate.properties文件
Configuration cfg = new Configuration();
//表示读取hibernate.cfg.xml文件
//Configuration cfg = new Configuration().configure();
//得到SessionFactory对象,相当于DataSource数据源
SessionFactory factory = cfg.buildSessionFactory();
//得到Session,相当于Connection连接
Session session = factory.openSession();
//开启事务 (如果是查询操作则无需使用事务)
Transaction trans = session.beginTransaction();
//此处则是要编写操作的程序,如保存操作
session.save(dept);
//提交事务(如果没有开启事务 则无需此操作)
trans.commit();
//关闭session
session.close()
下面是创建表并插入记录,演示代码:
package test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import bean.Dept;
public class Test1 {
public static void main(String[] args) {
Dept dept = new Dept();//创建对象
dept.setDname("市场部");
dept.setLoc("湖南长沙");
//1.读取hibernate.properties文件
Configuration cfg = new Configuration();
//2.再读取下hibernate.cfg.xml
//这里确保不知道配置文件是hibernate.properties
//还是hibernate.cfg.xml,所以都读一下
cfg = cfg.configure();
//3.得到SessionFactory对象,相当于DataSource数据源
SessionFactory factory=cfg.buildSessionFactory();
//4.得到Session,相当于Connection连接
Session session = factory.openSession();
//5.开启事务
Transaction trans = session.beginTransaction();
session.save(dept);//6.保存
trans.commit();//7.提交事务
//8.关闭session
session.close();
//生成DDL语句 ( 下面代码是查看表的生成语句 )
//SchemaExport export = new SchemaExport(cfg);
//该方法第一个参数 表示是否在控制台显示建表语句
//该方法第二个参数 表示是否建立数据库表
//export.create(true, true);
}
}