您的位置:首页 > 其它

hibernate开发步骤

2013-02-08 10:34 316 查看
*2 hibernate快速入门

1)开发步骤:

>>导入hibernate相关的10个jar包,如果后面,要用到其它功能,可以添加新jar包
(包括了MySQL的驱动包)

>>创建表:customers.sql

>>创建实体:Customer.java

>>创建Customer.hbm.xml映射文件,目的是通知hibernate框架,如何将实体和表关联起来

>>创建hibernate.cfg.xml配置文件,目的是通知hibernate框架,如何连接不同的数据库和产生不同数据库的SQL命令

>>测试类:CURD操作(CustomerService)

2具体步骤详解

>>jar 包:

antlr-2.7.6.jar 一个语言转换工具,Hibernate利用它实现 HQL
到 SQL 的转换

commons-collections-3.1.jar collections Apache
的工具集,用来增强Java对集合的处理能力

dom4j-1.6.1.jar dom4j XML 解析器

hibernate3.jar 核心包

javassist-3.9.0.GA.jar 代码生成工具, Hibernate用它在运行时扩展 Java类

jta-1.1.jar 标准的 JAVA
事务处理接口

log4j.jar 日志包

mysql-connector-java-5.1.7-bin.jar mysql驱动包

slf4j-api-1.5.8.jar slf4j-log4j12.jar hibernate使用的一个日志系统

>>创建sql表

例: dropdatabaseifexists hibernate;
createdatabaseifnotexists hibernate;
use hibernate;
droptableifexists customer;
createtableifnotexists customer(
id
intprimarykey auto_increment,
namevarchar(20)
default "小小",
ageintdefault 21,
des
varchar(100) default "文雅"
);
select * from customer;

>>Customer.hbm.xml文件

1.Hibernate 采用 XML 格式的文件来指定对象和关系数据之间的映射.
在运行时 Hibernate 将根据这个映射文件来生成各种 SQL
语句, 映射文件的扩展名为 .hbm.xml
如;Customer.hbm.xml文件.
如: 以上Customer.hbm.xml文件是Customer类和customers表的对应关系。该文件前缀必须和类名一致,后缀必须是.hbm.xml。文件位置任意

2. property元素:设定持久化类的属性和表字段映射

name属性:指定持久化类的属性的名字

column属性:指定表中字段的名称

type属性指定Hibernate映射类型 Hibernate映射类型是java类型与SQL类型的桥梁

.hbm.xml文件的来源:

hibernate-distribution-3.5.6-Final-dist.zip\hibernate-distribution-3.5.6-Final\project\tutorials\web\src\main\resources\org\hibernate\tutorial\domain......

注:该映射文件的规范在org.hibernate. hibernate-mapping-3.0.dtd文件中

例:

Customer.hbm.xml文件的属性含义:

<hibernate-mapping package="cn.itcast.web.hibernate.character0(实体对象的包名)">

<class name="Customer(类名)" table="CUSTOMERS(表名)">

<id name="id" column="ID" type="integer">

<generator class="increment"/>

</id>

<property name="name(属性名)" column="NAME(列名)"
type="string(hibernate类型)"/>

<property name="age(属性名)" column="AGE(列名)"
type="integer(hibernate类型)"/>

<property name="des(属性名)" column="DES(列名)"
type="string(hibernate类型)"/>

</class>

</hibernate-mapping>

>>hibernate.cfg.xml文件

创建 Hibernate 配置文件, Hibernate
从其配置文件中读取和数据库连接的有关信息, 这个文件应该位于应用的 classpath
下.

文件名必须是hibernate.cfg.xml,文件位置任意,
除了使用xml作为配置文件之除,还可以使用hibernate.properties文件(项目中不提倡)。

注:该映射文件的规范在org.hibernate.hibernate-configuration-3.0.dtd文件中

文件的来源:
hibernate-distribution-3.5.6-Final-dist.zip\hibernate-distribution-3.5.6-Final\project\tutorials\web\src\main\resources

例:

hibernate.cfg.xml文件的属性含义:

<hibernate-configuration>

<session-factory>

<!-- 配置连接数据库的相关属性 -->

<property name="connection.driver_class">com.mysql.jdbc.Driver(驱动类名)</property>

<property name="connection.url">jdbc:mysql://127.0.0.1:3306/hibernate(URL)</property>

<property name="connection.username">root(访问数据库的用户名)</property>

<property name="connection.password">root(访问数据库的密码)</property>

<!-- 通知hibernate动态生成哪个数据库的SQL命令
-->

<property name="dialect">org.hibernate.dialect.MySQL5Dialect(数据库的方言)</property>

<!--
显示hibernate动态生成的SQL命令,true表示显示
-->

<property name="show_sql">true(需要显示sq命令)</property>

<!-- 加载对象和关系的映射文件 -->

<mapping resource="cn/itcast/web/hibernate/character0/Customer.hbm.xml(映射文件的类路径)"/>

</session-factory>

</hibernate-configuration>

>>Configuration类:

是hibernate中一个用于加载hibernate.cfg.xml文件的类,config .config(“xml文件的类路径”)方法能够加载指定目录下的hibernate.cfg.xml文件,config.buildSessionFactory()创建一个SessionFactory工厂。该工厂有大量空闲的session.

Configuration 类负责管理 Hibernate
的配置信息。包括如下内容:

Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等(对应
hibernate.cfg.xml 文件)。持久化类与数据表的映射关系(*.hbm.xml
文件).

创建 Configuration 的两种方式

• 属性文件(src/hibernate.properties):

Configuration cfg = new Configuration();

• Xml文件(src/hibernate.cfg.xml)推荐

Configuration cfg = new Configuration().configure();

Configuration cfg = new Configuration().configure(“目录”);

>>SessionFactory接口

保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句。同时,SessionFactory还负责维护Hibernate的二级缓存,有且只放置一种类型数据库的相关信息
, 重量级,即创建需要大量时间和资源,因此将创建SessionFactory的工作,放在static块中,只创建一个,便于重用 , SessionFactory是一个线程安全的,所以可以定义成实例变量,无需加synchronized。

创建方式:

Configuration cfg = new Configuration().configure();

SessionFactory sf = cfg.buildSessionFactory();

>>Session

SessionFactory.openSession()

Session是由SessionFactory获取而来,它是轻量级,即创建需要少量时间和资源,每次数据库的操作(CURD)都需要一个Session的绑助,没有Session就无法与数据库表操作。

Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate
运作的中心,所有持久化对象必须在 session
的管理下才可以进行持久化操作。此对象的生命周期很短。Session
对象有一个一级缓存,显式执行 flush 之前,所有的持久层操作的数据都缓存在 session
对象处。相当于 JDBC 中的 Connection

Session常用的API

session.save(对象) //向数据库插入数据

session.update(对象) //更新数据

session.delete(对象) //删除数据

session.get(对象的字节码class文件,序号) //查询数据

//查询所有数据信息

String hibernateSQL = " from 需要查询的类的类名"; 例如: 查询User类 String hibernateSQL = " from User"; 此处的类名一个要和创建的类名保持一致.

Query query = session.createQuery("hibenate query language语句,不是sql语句")

例: Query query = session.createQuery(hibernateSQL) ;

List<类> list = query.list()

Session是不安全的,不要定义成实例变量,除非加synchronized。

将Session定义成局部变量,即在某个方法内部,就无需加synchronized。

>>Transaction接口(事物)

通过session.getTransaction()取得事务对象,在应用时,除查询外,其它都需要事务的支持,查询对事务的要求不限(可选),

开始事务:t.begin()

提交事务:t.commit()

回滚事务:t.rollback()

显示try..catch...finally...

例:

publicvoid saveCustomer(){
//创建customer对象,并设置属性值
Customer cus =
new Customer();
cus.setName("思思");
cus.setAge(21);
cus.setDes("文静");
//创建confingration对象
Configuration config =
new Configuration();
//加载配置文件,连接驱动
config.configure("cn/web/hibernate/hibernate.cfg.xml");
//创建sessionfactory
SessionFactory sessionfactory = config.buildSessionFactory();
//创建session
Session session = sessionfactory.openSession();
//创建事物
Transaction transaction= session.getTransaction();
try {
//事物开始
transaction.begin();
//保存实体域对象到表中
session.save(cus);
}
catch (HibernateException e) {
//错误的情况下事物恢复到原有的状态
transaction.rollback();
}finally{
//事务结束
transaction.commit();
}
session.close();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: