hibernate学习之实体类以及crud操

  • 实体类的编写规则

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");

2.演示操作实体类对象的方法
(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);



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值