实体类编写规则
1 实体类里面属性是私有的
2 私有属性生成公开的get和set方法操作
3 要求实体类有属性作为唯一值(一般使用id值)
4 实体类属性建议基本数据类型,使用基本数据类型对应的包装类
(1)基本数据类型对应的包装类
Int-Integer ,char-Character,其他都市首字母大写,比如double-Double
5 比如 表示学生的分数 ,加入int scrore
比如学生得了0分,int score=0;
如果表示学生没有参加考试,int score=0;不能准确表示学生是否参加考试
解决:使用包装类就可以了,Integer score=0,表示学生得了0分,表示学生没有参加考试,Integer score=null;
主键生成策略
1 hibernate要求实体类里面有一个属性作为唯一值,对应表主键,主键可以有不同的生成策略
2 hibernate主键生成策略有很多值
<id name="uid" column="uid">
<!-- 设置数据库表id增长的策略
native:生成表id值主键就是自动增长
-->
<generator class="native"></generator>
</id>
3 在class属性里面有很多的值
(1)native:根据使用的数据库自动选择哪个值
(2)uuid:之前的web阶段写代码生成uuid 值,hibernate帮我们生成uuid值
4 演示生成策略指uuid
(1)使用uuid生成策略,实体类id属性类型,必须是字符串类型
private String uid;
public String getUsername() {
return username;
}
public String getUid() {
return uid;
}
(2)配置部分写成uuid
<id name="uid" column="uid">
<generator class="uuid"></generator>
</id>
再次生成表如下所示:
实体类操作
对实体类的crud操作
添加操作
1 调用session里面的save方法实现
User user=new User();
user.setUsername("小马哥");
user.setPassword("520");
user.setAddress("美国");
//调用session的方法实现添加
session.save(user);
2 根据id查询
1 调用session中的get方法实现
package cn.itcase.hibernatetest;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import cn.itcase.hibernate.User;
import cn.itcase.utils.HibernateUtils;
public class HibernateDemo {
@Test
public void testGet() {
//1调用sessionFactory工具类得到sessionFactory
SessionFactory sessionFactory=HibernateUtils.getSessionFactory();
// 2,使用sessionFactory创建session对象
//session类似于conn连接
Session session=sessionFactory.openSession();
// 3,开启事务
Transaction tx=session.beginTransaction();
// 4,写具体的crud逻辑操作
//根据id查询
//调用session的get方法实现添加
//第一个参数,实体类的class
//第二个参数,id值
User user=session.get(User.class, 1);
System.out.println(user);
// 5,提交事务
tx.commit();
// 6,关闭资源
session.close();
sessionFactory.close();
}
}
结果如下
修改操作
1 首先查询,修改值
(1)先根据id查询,返回对象
(2)向返回的user对象里面设置修改之后的值
(3)调用sesion的方法进行update修改
代码如下:
public class HibernateDemo {
@Test
public void testUpdate() {
//1调用sessionFactory工具类得到sessionFactory
SessionFactory sessionFactory=HibernateUtils.getSessionFactory();
// 2,使用sessionFactory创建session对象
//session类似于conn连接
Session session=sessionFactory.openSession();
// 3,开启事务
Transaction tx=session.beginTransaction();
// 4修改操作 修改uid为2的username
//4.1根据id查询
User user=session.get(User.class, 2);
//4.2向返回的user对象里面设置修改之后的值
user.setUsername("东方不败");
//4.3调用session的方法修改,执行的过程--->到user对象里面找到uid的值,根据uid进行修改
session.update(user);
// 5,提交事务
tx.commit();
// 6,关闭资源
session.close();
sessionFactory.close();
}
删除操作
1 调用session里面的delete方法实现
@Test
public void testDelete() {
//1调用sessionFactory工具类得到sessionFactory
SessionFactory sessionFactory=HibernateUtils.getSessionFactory();
// 2,使用sessionFactory创建session对象
//session类似于conn连接
Session session=sessionFactory.openSession();
// 3,开启事务
Transaction tx=session.beginTransaction();
// 4删除操作
//第一种 根据id查询对象
User user=session.get(User.class, 4);
session.delete(user);
//第二种
//User user=new User();
//user.setUid(3);
//session.delete(user);
// 5,提交事务
tx.commit();
// 6,关闭资源
session.close();
sessionFactory.close();
}