Hibernate基本概念和CURD

 

Hibernate基本概念和CURD

一、开发流程

1、  由Domain objectàmappingàdb(官方推荐)。站在面向对象的角度

(1)       Domain类

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

(3)       表create table user();

2、  由DB开始,用工具生成mapping和Domain object(使用较多)。站在关系模型的基础上。

(1)       先把表建好

(2)       在生成Domain

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

3、  由映射文件开始。

二、hibernate实现细节

1、  实体类对象的限制:

class User{

       //添加一个有参数的构造方法

       public User(int id,String name,Date birthday){

}

//无参构造,是必须的。

public User(){

}

}

反射机制

Hibernate Class clazz

实体类对象有什么样的限制?

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

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

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

2、  映射文件:

一个Java类在映射文件中用一对<class>标签表示,有多个Java类,那么久应该有多个<class>标签。

对于这些<class>标签来说,我们可以将它们放到一个映射文件中,也可以把它们放到多个映射文件中。

映射文件的名字通常用:实体类的类名.hbm.xml。这个做的优点:,非常清晰,可读性非常好,利于日后的维护。

3、  代码编写:

Session接口中的常用方法:

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

(2)delete(),删除对象

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

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

 

三、*对象状态:

(1)瞬时状态:自己New出来的对象就是瞬时状态。

User user=new User();      //user是一个瞬时对象,在数据库的表中是没有记录和该对象相对应的。和session没有关系。

user.setName(“ddd”);

user.setBirthday(new Date());

 

session.save(user);

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

(3)       脱管状态:数据库表中有一条记录和这个对象是相对应的,但是它和session没有任何关系。

 

 

session

session save(user)

commit()

user

user

db

user

close()

瞬时状态

持久状态

脱管状态

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值