Hibernate中更新脱管实体
2016-05-04 22:43
603 查看
脱管:PO实例曾经和Session实例关联过,但因为Session关闭等原因,PO实例脱离了Session的管理,这种状态称为脱管。
更新脱管实体:对于脱管后的PO实例,我们使用新的Session来保存这些修改,使它重新回到持续化状态。
例子:实现更新脱管实体,并删除持久化实体
一:数据库
二:News.java
三:Test.java
四:运行结果
控制台:
数据库:
更新脱管实体:对于脱管后的PO实例,我们使用新的Session来保存这些修改,使它重新回到持续化状态。
例子:实现更新脱管实体,并删除持久化实体
一:数据库
二:News.java
package com.mao; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table (name="new_mao") public class News { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer id; private String title; private String content; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
三:Test.java
package com.mao; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; public class Test { public static void main(String []args)throws Exception{ //Hibernate4.1创建SessionFactory //实例化Configuration 通过该对象的configure()方法加载hibernate.cfg.xml Configuration conf=new Configuration().configure(); ServiceRegistryBuilder serviceRegistryBuilder=new ServiceRegistryBuilder().applySettings(conf.getProperties()); ServiceRegistry registry=serviceRegistryBuilder.buildServiceRegistry(); //以Configuration实例创建SessionFactory工厂 SessionFactory sf=conf.buildSessionFactory(registry); //创建Session 对PO操作必须在Session的管理下才能同步到数据库 Session sess=sf.openSession(); //通过Session对象开始事务 Transaction tx=sess.beginTransaction(); //创建消息对象 News n=(News) sess.load(News.class,10); System.out.println("脱管前的数据为"+n.getContent()); sess.close(); System.out.println("-----处于脱管状态-------------"); System.out.println("-----------脱管下修改数据-----------"); n.setContent("VipMao"); Session sess2=sf.openSession(); Transaction tx2=sess2.beginTransaction(); sess2.update(n); System.out.println("---------重新转回持久化状态"); System.out.println("修改后的数据为:"+n.getContent()); sess2.update(n); News n2=(News) sess2.load(News.class, 11); sess2.delete(n2); System.out.println("删除数据成功!"); //提交事务 tx2.commit(); //关闭Session sess2.close(); sf.close(); } }
四:运行结果
控制台:
数据库:
相关文章推荐
- 浅谈Android系统开发中NDK LOG的使用
- 物联网【劲爆发现】免费云服务平台,AP透传,Web透传,ESP8266,Hex格式数据
- Compass是什么
- 新手学ajax1
- javascript 动态改变onclick事件
- 经典递归
- 安卓系统自带图标的存储路径
- TCP为何需要三次握手连接?为何需要四次握手终止连接?
- 4.Ubuntu 系统下安装 IntelliJ IDEA - IntelliJ IDEA 使用教程
- UIWindow
- HDOJ 1001
- bzoj3720 Gty的妹子树
- Jenkins配置slave遇到“无法启动该应用程序”的问题
- Java文件路径(getResource)
- RHEL 6下安装Apache
- 260. Single Number III -取出非重复数字(加强版)
- 3.Windows 系统下安装 IntelliJ IDEA - IntelliJ IDEA 使用教程
- Windows 7 搭建FTP
- hdoj--4289--Control(最小割拆点)
- 使用 strtok 提取 ip (点分十进制)网段