1.用来更新detached对象,更新完后转为persistent状态
Session session = sf.getCurrentSession(); Transaction t = session.beginTransaction(); Teacher teacher = (Teacher) session.get(Teacher.class, 1); t.commit(); teacher.setName("张三"); Session session2 = sf.getCurrentSession(); Transaction t2 = session2.beginTransaction(); session2.update(teacher); t2.commit();
2.更新有或者没有id的transient对象不会报错(不管这个id在数据库中有没有对应的数据)。
Teacher teacher = new Teacher(); teacher.setId(1); teacher.setName("张三"); Session session = sf.getCurrentSession(); Transaction t = session.beginTransaction(); session.update(teacher); t.commit();
注:更新有id的transient对象(在数据库中有对应的数据),除了设置的成员变量外,其他的都是空值。
3.更新部分字段:
1)XML设定property标签的update属性为true,annotation设定@Column的updatable属性为true(不灵活,很少用)
2)使用XML中的dynamic-update,JPA annotation没有对应的属性(同一个session可以,跨session不行,不过可以用marge)
Session session = sf.getCurrentSession(); Transaction t = session.beginTransaction(); Student student = (Student) session.get(Student.class, 1); student.setName("张三"); t.commit();
Session session = sf.getCurrentSession(); Transaction t = session.beginTransaction(); Student student = (Student) session.get(Student.class, 1); student.setName("张三"); t.commit(); student.setName("李四"); Session session2 = sf.getCurrentSession(); Transaction t2 = session2.beginTransaction(); session2.update(student);//session2.merge(student); t2.commit();
注:merge这里执行时,会再次执行sql查询语句,然后更新
3)使用HQL语句进行更新
Session session = sf.getCurrentSession(); Transaction t = session.beginTransaction(); Query q = session.createQuery("update Student s set s.name='张三' where id = 1"); q.executeUpdate(); t.commit();
相关推荐
hibernate 经典描述对你理解会有一定的帮助的
hibernatetools-Update-4.1.1.zip
Eclipse中Hibernate插件。
Eclipse用于Hibernate框架开发插件,全CSDN最低资源分下载,让你吃上真正的石灰。。。
Session session=HibernateSessionFactory.getSession(); String sql=”from Usertable as user where user.username=?”; Query q=session.createQuery(sql); q.setString(0,username); List l=q.list(); Iterator...
Hibernate merge、update与saveOrUpdate方法的区别
hibernate-tools.jar
Hibernate稳定版(hibernate-release-5.2.18.Final.zip),Hibernate ORM 是一个为应用程序、库和框架提供对象/关系映射 (ORM) 支持的库。它还提供了 JPA 规范的实现,这是 ORM 的标准 Java 规范。
hibernateOperate.java DeleteTest.java HibernateSessionFactory.java BatchUpdateTest.java
不错的hibernate mappings 工具,绿色无污染
<prop key="hibernate.hbm2ddl.auto">update</prop> --> !-- Turn batching off for better error messages under PostgreSQL <prop key="hibernate.jdbc.batch_size">100</prop> --> <prop key="...
<tx:method name="update*" propagation="REQUIRED" /> *" propagation="REQUIRED" /> *" propagation="REQUIRED" /> <!-- 这个映射配置主要是用来进行静态资源的访问 --> **" location="/js/" ...
<property name="hibernate.hbm2ddl.auto">update <!-- 配置C3P0的连接池 --> <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider <!-- 映射配置文件 -...
hibernate执行原生sql语句
hibernate-tools3.2的user guid
1.1. 开始Hibernate之旅 1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. 架构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 3. 配置 3.1. 可编程的配置方式 ...
Hibernate 注解 annotation 超级详细
新闻发布系统 使用的平台是MyEclipse10.5....<prop key="hibernate.hbm2ddl.auto">update 第一次运行时请将update修改为create 让他自动生成表结构。以后启动把他修改回update就不用每次都重新生成表结构了。
<class name="org.hibernate.sample.TUser" table="t_user" dynamic-update="true" dynamic-insert="true" optimistic-lock="version"> …… </hibernate-mapping> optimistic-lock 属性有如下可选取值: none:无...
博文链接:https://limaofa.iteye.com/blog/212727