一 编写规则
1 实体类里面属性私有
2 私有属性使用公开set和get方法操作
3 要求实体类有属性作为唯一值
4 实体类属性建议不使用基本数据类型,使用基本数据类型对应的包装类
(1)八个基本数据类型对应的包装类
- int - Integer
- char - Character
- 其他的都是首字母大写,比如 double - Double
(2)比如 表示学生的分数,假如 int score
- 比如学生得了0分,int score = 0;
- 如果表示学生没有参加考试,int score = 0 ;不能准确表示学生是否参加考试
- 解决:使用包装类,Integer score = 0,表示学生得了0分
- 表示学生没有参加考试,Integer score = null
二 hibernate主键生成策略
1 hibernate要求实体类里面有一个属性作为唯一值,对应表主键,主键可以生成不同策略
2 hibernate主键生成策略有很多值
<generator class="native"></generator>
3 在class属性里面有很多值
(1)native
主键 自增长 不为空
- 根据我们使用的数据库帮我们选择哪个值
(2)uuid
String类型主键 不为空
- 使用
uuid
生成策略,实体类id属性类型必须为字符串类型 - 每次自动生成一个随机唯一的id值
三 实体类操作
1 crud操作
(1)增(session中save方法)
User user = new User();
user.setName("小明");
user.setPassword("555555");
//调用session的方法实现添加
session.save(user);
(2)删 (调用session中delete方法)
- 方法一
User user=session.get(User.class,1);
session.delete(user);
- 方法二
User user = new User();
user.setId(2);
session.delete(user);
(3)改( 根据id查询,返回对象)
/*修改
* - 先根据id查在改
* - 向返回的user对象里面设置修改之后的值*/
User user= session.get(User.class,1);
user.setName("小王");
user.setPassword("123456");
session.update(user);
(4)查(根据id进行查询)
// 第一个参数:实体类的class
//第二个参数:id值
User user=session.get(User.class,1);
System.out.println(user);
2 实体类对象状态(概念)
- 顺势态:对象里面没有id值,对象与session没有关联
- 持久态:对象里面有id值,对象与session也有关联
- 托管态:对象里面有id值,但对象与session没有关联
3 操作实体类对象的方法(saveOrUpdate方法)
- 实体对象是顺势态,执行添加操作
User user = new User();
user.setName("小明");
user.setPassword("555555");
session.saveOrUpdate(user);
- 实体对象是托管态,执行修改操作
User user = new User();
user.setId(3);
user.setName("小红");
user.setPassword("789456");
session.saveOrUpdate(user);
- 实体对象是持久态,执行修改操作
User user=session.get(User.class,3);
user.setId(3);
user.setName("小小");
user.setPassword("456655");
session.saveOrUpdate(user);