Hibernate session API

Hibernate Session 常用数据库操作API


[Object] get(class, key)
调用后直接查询数据库,如果一级缓存或二级缓存中存在数据,则从缓存中取。


[Object] load(class, key)
调用后先返回对象代理,当对象被使用时,从数据库或缓存中查找数据。


[Serializable] save(Object)
保存数据,同一个事务对同一个对象使用多次save,后面的save会用update语句操作。


void update(Object)
更新指定数据,对象必须是永久状态或托管状态,瞬时状态对象更新会抛异常。


void delete(Object)
删除指定数据,对象必须是永久状态或托管状态,瞬时状态不会异常但无意义。


void saveOrUpdate(Object)
判断数据是否存在,存在的话做更新操作,会先执行查询语句,再执行更新或插入语句,
主键不能自增,否则不能判断为重复,参数会从瞬时状态或托管状态变成永久状态。


[Object] merge(Object)
与saveOrUpdate相似,唯一不同的是参数对象不会变为永久状态,返回对象是永久状态。


------------------------------
session的创建
SessionFactory sessionFactory = new [Configuration/AnnotationConfiguration]()
        .configure().buildSessionFactory();
Session session = sessionFactory.openSession(); // 永远都创建一个新session,资源消耗大,不推荐使用
Session session = sessionFactory.getCurrentSession(); // 获得当前线程的session,一个线程一个session,
                                                      // 无需关闭资,源推荐使用
Transaction trans = session.beginTransaction();
...
session.flash(); //刷新session缓存适用于更新操作后使用
trans.commit();
catch()... trans.rollback();
finally ... session.close(); // 使用getCurrentSession方法获得的session会自动关闭事务,无需手动关闭






------------------------------
SchemaExport 工具创建表
Configuration conf= new Configuration(); //XML
AnnotationConfiguration annConf = new AnnotationConfiguration(); //Annotation
// 指定要创建的实体类对应的表
conf/annConf.addClass(类.class);
conf.Configure(); // 加载配置定义的类
SchemaExport se = new SchemaExport(conf/annConf);
se.create(true/*是否打印dllSQL数据*/, true/*是否根据映射文件创建表*/);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值