实体类编写规则
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(); }