Hibernate
1、生命状态:
持久化状态:同一个hibernate session生命周期中(session未关闭),查询的对象 set属性值在事务提交时不用调用save等方法会自动更新到数据库。
托管状态:session没有缓存,数据库有记录
游离状态:事务 commit 后实体的状态,session close了
瞬时状态:new 了一个普通的 Java 对象
例子:
Session session = hibernate.openSession();
session.getTransaction().begin();
User user = new User("1","123");
session.save(user);//持久化保存
System.out.println(user);
//由于上面save保存过了,session中有缓存,有id和对象,
//查阅数据库可以知道下一个数据的id为2
//本来使用get方法会想执行select查询一下,现在没有执行select,
//是因为session缓存中有数据,就不用查询数据库了,直接从session中取数据
User user1 = (User) session.get(User.class,2);
System.out.println(user1);
session.getTransaction().commit();
session.close();
共享了同一个集合应用:(代表一个集合有多个父类对象)
HibernateException: Found shared references to a collection: XXXX.
Found two representations of same collection:XXXX
@Version:
orm实现得乐观锁,在jpa中只要给一个实体加一个version字段加上@version注解既可实现乐观锁,每一更新都会给该字段加1,并且where条件带上version去比较