Java有很多种开发框架,每一种开发框架都有其独特的作用以及特点,但是不管怎样,都能够帮助开发人员简化开发工作,那hibernate对象的三种状态有哪些?接下来我们就来给大家讲解一下这方面的内容。
Hibernate中对象有三种状态: 临时状态(Transient)、持久状态(Persistent)、游离状态(Detached)。
临时状态:刚刚使用new语句创建,还没有被持久化,不处于Session的缓存中。处于临时状态的状态的Java对象被称为临时对象。
持久化状态:已经被持久化,加入到Session的缓存中。处于持久化状态的Java对象被称为持久化对象。
游离状态:已经被持久化,但不处于session的缓存中。处于游离状态的Java对象被称为游离对象。
Hibernate如何修改记录?
Hibernate 在 Session 接口中为我们提供了一个 update() 方法,该方法可以用来修改数据库表中的记录。
1. 在 MyTest 类中,添加一个 testUpdate() 方法,代码如下。
/** * 修改记录 */ @Test public void testUpdate() { //加载 Hibernate 核心配置文件 Configuration configuration = new Configuration() .configure(); //创建一个 SessionFactory 用来获取 Session 连接对象 SessionFactory sessionFactory = configuration.buildSessionFactory(); //获取session 连接对象 Session session = sessionFactory.openSession(); //开始事务 Transaction transaction = session.beginTransaction(); //创建实体对象 User user = new User(); user.setId(3); //设置需要修改的字段 user.setUserName("更新用户名"); //直接调用 update() 方法进行修改 session.update(user); //提交事务 transaction.commit(); //释放资源 session.close(); sessionFactory.close(); }
2. 执行测试方法 testUpdate(),控制台输出如下。
Hibernate: update user set user_id = ? , user_name = ? , password = ? , email = ? where id = ?
3. 查询数据库 user 表中的数据,结果如下图。
直接使用 update() 方法修改记录
从图和控制台输出可知,update() 方法会更新指定记录的全部字段,对于我们没有指定的字段,Hibernate 则将其修改为默认值,这显然不是我们想要的结果。
通常我们会采用“先查询再修改”的方式来避免此问题的发生,即先将需要修改的记录查询出来,获得该条记录的实体对象,然后重新给该对象中的字段重新赋值,最后再使用该对象进行更新操作。
4. 修改 testUpdate() 方法的代码,采用“先查询再修改”的方式进行更新,代码如下。
/** * 修改记录 */ @Test public void testUpdate() { //加载 Hibernate 核心配置文件 Configuration configuration = new Configuration() .configure(); //创建一个 SessionFactory 用来获取 Session 连接对象 SessionFactory sessionFactory = configuration.buildSessionFactory(); //获取session 连接对象 Session session = sessionFactory.openSession(); //开始事务 Transaction transaction = session.beginTransaction(); //现将需要修改的记录查询出来 User user = session.get(User.class, 3); //设置需要修改的字段 user.setUserName("更新用户名"); //直接调用 update() 方法进行修改 session.update(user); //提交事务 transaction.commit(); //释放资源 session.close(); sessionFactory.close(); }
5. 重新执行测试方法 testUpdate() ,控制台输出如下。
Hibernate: select user0_.id as id1_0_0_ , user0_.user_id as user_id2_0_0_ , user0_.user_name as user_nam3_0_0_ , user0_.password as password4_0_0_ , user0_.email as email5_0_0_ from user user0_ where user0_.id = ? Hibernate : update user set user_id = ? , user_name = ? , password = ? , email = ? where id = ?
6. 查询数据库 user 表中的数据,如下图。
这样我们成功地使用 Hibernate 修改了 user 表中的一条记录,其实 Hibernate 不仅可以修改记录还可以进行删除以及插入记录,总之增删改查操作都是可以的!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。
推荐阅读: