hibernate基本概念和CURD(增删改查)详解
来源:互联网 发布:京东程序员工资待遇 编辑:程序博客网 时间:2024/05/21 14:05
开发流程三种方式
1、由Domain object -> mapping->db。(官方推荐)
2、由DB开始,用工具生成mapping和Domain object。(使用较多)
3、由映射文件开始。
一. Domain Object限制(实体类的限制)
class clazz=User.class;
//调用无参的构造方法
User user=clazz.newInstence();
1.默认的无参构造方法(如果你加上了有参数的构造方法,必须加上无参的构造)
2.有无意义的标示符id(主键)(可选)(hibernate性能不能完全发挥)
3.非final的类,对懒加载有影响(可选)(hibernate性能不能完全发挥)
二. 映射文件
一个java类在映射文件中用一对<clas>标签表示。如果有多个java类,那么就应该有多个<class>标签,这些class标签,可以放到一个影身文件中,可以放到多个映射文件中。类型名.hbm.xml(这样命名可读性好),
如果类名饿表明一样的话,可以省略table属性
三. session接口中用到的方法
l Session的几个主要方法
1、save,persist保存数据,persist在事务外不会产生insert语句。开启事务和save方法一样,但是如果都不开启事务save做了插入回滚,persist不做插入
2、delete,删除对象
3、update,更新对象,如果数据库中没有记录,会出现异常。
4、get,根据ID查,会立刻访问数据库。
5、Load,根据ID查,(返回的是代理,不会立即访问数据库)。
6、saveOrUpdate,merge(根据ID和version的值来确定是save或update),调用merge你的对象还是托管的。
7、lock(把对象变成持久对象,但不会同步对象的状态)。
8、load(),第一次使用才访问,懒加载
9、clear()清楚缓存
四.模板代码
public static void addUser1(User user){
Session session=null;
Transaction tx=null;
try{
session=HibernateUtil.getSession();
tx=session.beginTransaction();
session.save(user);
//hibernate的自动回滚
tx.commit();
}finally{
if(session!=null)
session.close();
}
}
四. 对象的状态
(1)瞬时状态:自己new出来的对象。在数据库的表中是没有记录和相应的瞬时对象是对应的.
(2) 持久状态的对象:session.Save(user);数据库中有记录和这个对象相对应得并且被session管理,持久状态的数据改变时,数据库也会随着改变
(3)
脱管状态:数据库的表中有一条记录和对象相对应,和session脱离管理,对象在做任何改变数据库都不会改变
- hibernate基本概念和CURD(增删改查)详解
- Hibernate概念深入和CURD(增删改查)
- Hibernate---curd(增删查改)操作
- Hibernate实现增删查改CURD例子
- CURD增删改查
- nodejs CURD(增删改查)get和post方法
- 2、Mybatis增删改查(CURD)
- Hibernate+Maven+Struts2——实现增删查改CURD的步骤详解
- Hibernate基本概念与CRUD(增删改查)
- YII2 CURD 增删改查
- Yii 增删改查(CURD)
- CURD-增删查改操作
- gxt CURD ,数据库增删改查简单例子(Spring + Hibernate)
- Hibernate CURD(增删改查)单例创建SessionFactory对象
- 【hibernate】hibernate 2 (基本概念和CURD)
- Hibernate基本概念和CURD
- laravel (5.2) curd (增删改查)
- MyBatis实现单表增删改查(CURD)--新增
- 双表对比,获得新增、更新、删除数据的表,获得用于更新表的SQL语句方法
- c# as is 类型转换
- Java内部类总结(下)
- Android程序对不同手机屏幕分辨率自适应的总结
- oracle profile参数文件管理和使用(2)
- hibernate基本概念和CURD(增删改查)详解
- Oracle 常用函数整理
- phplot 多色显示数据
- sql 2005 取的一个月开始和结束
- 内网渗透一些命令收集整理
- 关于c99中restrict关键字的使用
- 文件读取的一些小知识
- 如何调用DLL (基于Visual C++6.0的DLL编程实现)
- oracle 字符转换