- 实体类的编写规则
1.实体类的属性是私有的
2.私有属性要使用公开的get,set方法
3.要求实体类有属性作为唯一值(一般使用id值)
4.实体类属性建议不使用基本数据类型,而是使用基本数据类型对应的包装类
(1)八个基本数据类型的包装类
-int ——Integer
-char——Character
-其他都是首字母大写比如 double——Double
(2)比如表示学生的分数,假如 int score;
- 比如学生得了0分,int score = 0;
- 如果表示学生没有参加考试,int score = 0; 不能准确的表示学生是参加考试
· 解决:使用包装类Integer score = null(包装类可以判断null值,初始值也为null,int初始值为0,无法区分null)
- hibernate主键生成策略
1.hibernate要求实体类里面有一个属性作为唯一值,对应表主键,主键可以不同生成策略
2.主键生成策略有很多值,只要记住以下两个值
(1)native:根据使用的数据库会选择哪个值
(2)uuid:之前web阶段需要写代码生成uuid值,hibernate会帮我们自动生成uuid值
3.演示生成uuid
(1)使用uuid生成策略,实体类id属性数据类型必须字符串类型
(2)配置部分写uuid值
<generator class="uuid">
</generator>
(3)结果:
- 实体类的操作
1.添加操作
//添加功能
User user = new User();
user.setS_username("sq");
user.setS_password("sq");
//调用session里面的方法实现添加
session.save(user);
2.根据id查询
(1)调用session里面的get方法实现
//4.根据id查询
//调用session里面的get方法
//第一个参数:实体类的class
//第二个参数:id值
User user = session.get(User.class, "4028802e5c8b835a015c8b835cd20000");
System.out.println(user);
3.修改操作
(1)首先查询,再修改值
根据id查询,返回对象
//4.修改操作
//4.1根据id查询
User user = session.get(User.class, "4028802e5c8b835a015c8b835cd20000");
//4.2向返回的对象里面设置修改之后的值
user.setS_username("lucy");
//4.3调用session的方法进行修改
//执行过程:到user对象里面找到uid值,根据uid值进行修改
session.update(user);
注意:update可以改成save方法,结果一样,但是违反里面规则,还有saveorupdate方法
4.删除操作
//4.删除操作
//第一种根据id查询出对象(一般)
// User user = session.get(User.class, "4028802e5c8b835a015c8b835cd20000");
// session.delete(user);
//第二种
User user = new User();
user.setS_uid("4028802e5c8b8845015c8b8848550000");
session.delete(user);
- 实体类对象状态(概念)
1.实体类的状态有三种
(1)瞬时态:对象里面没有id值,对象与session没有关联(添加对象时创建的没有id对象)
User user = new User();
user.setS_username("sq");
user.setS_password("sq");
(2)持久态:对象里面有id值,对象与session关联
User user = session.get(User.class, "4028802e5c8b835a015c8b835cd20000");
(3)托管态:对象里面有id值,对象与session没有关联(用的不多)
User user = new User();
user.setS_uid("4028802e5c8b8845015c8b8848550000");
(1)savOrUpdate方法:实现添加,实现修改操作
//4.SaveOrUpdate操作
User user = new User();
user.setS_username("张三");
user.setS_password("111");
//实体类对象是瞬时态时,做添加操作
session.saveOrUpdate(user);
//4.SaveOrUpdate操作
User user = new User();
user.setS_uid("4028802e5c8bb437015c8bb43a350000");
user.setS_username("老王");
user.setS_password("333");
//实体类对象是托管态时,做修改操作
session.saveOrUpdate(user);
//4.SaveOrUpdate操作
User user = session.get(User.class, "4028802e5c8b835a015c8b835cd20000");
user.setS_username("lucy");
//实体类是持久态,做修改操作
session.saveOrUpdate(user);