hibernate详解二

hibernate主键生成策略,这里主要介绍常用的两种

<generator class="native"/>:根据使用的数据库来选择具体的值,生成的主键是自动增长的,实体类的id属性必须是Integer类型

<generator class="uuid"/>:生成32位的随机字符串,实体类的id属性必须是String类型

对实体类进行CRUD操作

这里不再演示,直接调用session的方法即可:save() 、delete() 、update()、get()、SaveOrUpdate()

实体类的三种状态

1、瞬时状态:与session没有关联,没有ID

User u = new User();
u.setUsername("李四");
u.setPassword("123");
u.setAddress("日本");

2、持久状态:与session有关联,并且有ID

User user = session.get(User.class, 2);

3、托管状态:与session没有关联,但有ID

User user = new User();
user.setUsername("大神");
user.setPassword("dfdf");
user.setAddress("澳大利亚");
user.setId(1);

hibernate的一级缓存
hibernate的一级缓存默认是打开的

hibernate的一级缓存的使用范围是一个session范围、从session创建到session关闭范围
hibernate的一级缓存中存储的数据,必须是持久态的数据
以下是执行过程

hibernate的一级缓存的快照区特点(持久态对象会自动更新数据库)

 

Query、Criteria、SqlQuery查询多条记录介绍

 

1、使用Query对象,不需要写sql语句,但是需要写hql语句。

sql和hql的区别:sql操作的是表和表的字段,hql是操作实体类和属性

 

Query query = session.createQuery("from User ");
List<User> list = query.list();

2、使用Criteria对象
Criteria criteria = session.createCriteria(User.class);
List<User> list = criteria.list();

3、使用SqlQuery对象,就是写普通的sql

SQLQuery query = session.createSQLQuery("select * from t_user");
List<object[]> list = query.list();

这里集合中封装的是数组,我们想要的是对象,那么
query.addEntity(User.class);
List<user>list = query.list();

如果想要集合中是map的话,可以
query.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP);
List<Map> list = query.list();




 
 

 

 

 





 


posted @ 2019-05-18 11:02  子爵号  阅读(277)  评论(0编辑  收藏  举报