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

来源:互联网 发布:最好的门户网站 知乎 编辑:程序博客网 时间:2024/04/30 07:21
 

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();

}

 

 

 

原创粉丝点击