您的位置:首页 > 其它

Hibernate开发流程——基本概念和CURD

2011-12-06 14:31 323 查看
Hibernate开发流程——基本概念和CURD
一、开发流程

(1) Domain类

(2)映射文件User.hbm.xml

(3)表create table user();

1、 由Domain object->mapping->db.(官方推荐)

2、 由DB开始,用工具生成mapping和Domain object。

3、 由映射文件开始。

二、

1、 Domain Object限制(实体类对象限制)

(1) 默认的构造方法(必须的)。

(2) 有无意义的标示符id(主键)(可选)

(3) 非final的,对懒加载有影响(可选)

Domain Java Object(User)

public class User{

private int id;

private String name;

private Date birthday;

//getter setter...

}

2、映射文件

一个java类在映射文件中用一对<class>标签表示。如果有多个java类,那就应该有多个<class>标签。这些<class>标签可以放到一个映射文件,可以许多到多个映射文件

3、代码编写

工具类HibernateUtil

static{

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

}

Session接口中的常用方法

1、hbm.xml

<?xml version="1.0"?>

<hibernate-mapping package=“cn.itcast.domain">

<class name="User" table="user">

<id name="id">

<generator class="native"/>

</id>

<property name="name"/>

<property name="birthday”/>

</class>

</hibernate-mapping>

三、

Session的几个主要方法

1、save,persist保存数据,在不开启事务时,save()方法是产生了insert语句并执行,但由于没有提交事务,所以最终被回滚了。Persist()在事务外不会产生insert语句。

2、delete,删除对象

3、update,更新对象,如果数据库中没有记录,会出现异常。

4、get,根据ID查,会立刻访问数据库。

5、Load,根据ID查,(返回的是代理,不会立即访问数据库)。

6、saveOrUpdate,merge(根据ID和version的值来确定是save或update),调用merge你的对象还是脱管的。

7、lock(把对象变成持久对象,但不会同步对象的状态)。

(1)瞬时状态:自己new出来的对象就是瞬时状态 User user=new User(); //user是一个瞬时对象,数据库的表中没有记录和该对象相对应

Session.save(user);

(2)持久状态:数据库表中有记录和这个对象相对应的,并且被session管理

(3)脱管状态:数据库表中有一条记录和对像相对应,但它和session没有关系了

1、初始化代码(只做一次)

Configuration cfg = new Configuration();

cfg.configure(“config.cfg.xml”);

也可以通过cfg.setProperty设置属性。

SessionFactory sessionFactory = cfg.buildSessionFactory()

2、模板代码

Session session = null;Transaction tx = null;

try{

session = sessionFactory.openSession();

tx = session.beginTransaction();

//…你的代码save,delete,update,get…

tx.commit();

}catch(Exception e){

if(tx !=null)tx.rollback();throw e;

}finally{

if(session != null)session.close();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: