-
session详解:
查看全部 -
hibernate的执行流程
查看全部 -
Hibernate单表操作CRUD实例
保存:session的save方法。
修改:session的update方法。
删除:session的delete方法。
查询:session的get/load方法(查询单个记录)。
session.get(类对象(Student.class),要查询的主键(1))。
参数中提示的 Class arg0 表示要传入 类对象 arg0 ,Class 表示的是类型是 Class,也就是 类类型。
get与load的区别
1、 在不考虑缓存的情况下,get方法会在被调用之后立即向数据库发出sql语句,并返回持久化对象,而load方法会在被调用之后返回一个代理对象,该代理对象只保存了实体对象的id(主键),直到真正使用对象的非主键属性时才会发出sql语句。
2、 如果要查询的数据不存在,get方法返回null,load方法抛出异常org.hibernate.ObjectNotFoundException
查看全部 -
<component name="address" class="Address"> <property name="postname" column="POSTNAME"></property> <property name="phone" column="PHONE"></property> <property name="address" column="ADDRESS"></property> </component>
组件属性:学生标签有一个 address 属性,address 是 类(class)Address 的实例对象,这个类有三个字段 postcode,phone。address。就把 address 这个属性叫做组件属性。
查看全部 -
CRUD 增删改查
创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)
查看全部 -
openSession() 需要手动关闭(session.close())不然一直消耗 connection 资源最后连接溢出
getCurrentSession() 每次提交事务后会自动关闭 session,也就释放了 connection 资源,每次连接的 connection 都是同一个 connection 对象,connection 对象的 hashCode 相同
查看全部 -
Hibernate 对数据的操作都是封装在 事务 中的,并且默认是非自动提交方式,所以用 session 保存对象时,如果不开启事务,并且手工提交事务,对象并不会真正保存在数据库中。
开启事务是通过 session.openTransaction() 实现的,事物的提交是 transaction.commit() 实现的
查看全部 -
执行 session 的某个方法时,要先开启一个事务,也就是这些方法封装在事务中,执行完方法后,要先提交事务,再关闭 session 。
session与connection,是多对一的关系,每个session都有一个与之对应的connection,一个connection不同时刻可以供多个session使用
查看全部 -
通过Hibernate API编写访问数据库的代码
1.开启事务
1 12345678910 //创建配置对象
Configuration config =
new
Configuration().configure();
//创建服务注册对象
ServiceRegistry serviceRegistry =
new
ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
//创建会话工厂对象
sessionFactory = config.buildSessionFactory(serviceRegistry);
//会话对象
session = sessionFactory.openSession();
//开启事务
transaction = session.beginTransaction();
2.执行CRUD操作
12 Student s =
new
Student(
1
,
"张三丰"
,
"男"
,
new
Date(),
"武当山"
);
session.save(s);
3.提交事务,关闭相应的资源
123 transaction.commit();
//提交事务
session.close();
//关闭会话
sessionFactory.close();
//关闭会话工厂
查看全部 -
hibernate总结
查看全部 -
hjibernate单一主键
查看全部 -
Hibernate单表操作CRUD实例
保存:session的save方法。
修改:session的update方法。
删除:session的delete方法。
查询:session的get/load方法(查询单个记录)。
session.get(类对象(Student.class),要查询的主键(1))。
session.load(类对象(Student.class),要查询的主键(1))。
get和load的区别:
第一个区别:在不考虑缓存的情况下,get方法会在调用之后立即向数据库发出sql语句(不管是否使用该对象,它都会立刻发出sql语句)。直到使用对象的非主键属性时才会发出sql语句。
第二个区别:get方法会在调用之后立即返回持久化对象。load方法会在调用后返回一个代理对象,该代理对象只保存了实体对象的主键Id。
获得类对象的名字:(反射机制)s.getClass().getName()。
第三个区别:查询数据库不存在的数据时,get方法返回null,load方法抛出异常org.hibernate.ObjectNotFoundException。
查看全部 -
session没有关闭
session关闭
查看全部 -
hibernate开发基本步骤
查看全部 -
get与load的区别
1、 在不考虑缓存的情况下,get方法会在被调用之后立即向数据库发出sql语句,并返回持久化对象,而load方法会在被调用之后返回一个代理对象,该代理对象只保存了实体对象的id(主键),直到真正使用对象的非主键属性时才会发出sql语句。
2、 如果要查询的数据不存在,get方法返回null,load方法抛出异常org.hibernate.ObjectNotFoundException
查看全部
举报