jcst.net
当前位置:首页 >> sEssion的方法sAvE >>

sEssion的方法sAvE

save()和 persist()方法区别:使用 save() 方法保存持久化对象时,该方法返回该持久化对象的标识属性值(即对应记录的主键值);使用 persist() 方法来保存持久化对象时,该方法没有任何返回值.因为 save() 方法需要立即返回

persist在没开启事务时,不会插入数据库,即不会有insert语句,save要是没有开启事务并提交,则会插入数据后回滚数据库,所以没有插入但有insert语句

当你用hibernate生成实体类的时候,无论是pojo还是注解,他都会对应指定数据库中的表,比如你的user对象,你new他的时候肯定是UserBean user = new UserBean();然后当你save的时候,他就会查找user对象的实体bean,这个时候查找pojo或者是注解的配置指向的那个表.字段名都是一一对应的.

session.save(o)给他加上事务,然后提交事务试试

貌似是hibernate的方法.默认你按住ctrl点save会打开源代码的,但毕竟你没有hibernate的源代码,所以打不开,打开的只是将hibernate的class反编译出来的东西.如果你有hibernate的源代码.那你就点Attach Source按钮,选External File,然后找到你的hibernate源代码的jar或者zip文件,之后你就可以看了

drop table if exists clients; create table clients( clientId int auto_increment primary key, clientName varchar(20) not null ); client.hbm.xml <class name="org.swq.chapter6.Client" table="clients"> <id name="clientId" column="clientId" type=

是通过object.getClass();进行映射的..

update是根据你定义的主键找到对应的数据,你改变了name,而age没有值,那么如果这儿user对象的主键在数据库中存在,那么当你update时,session会在自己的缓存中查找是否存在这个要update的对象,存在就不再将其加入到缓存,当session.flush()时才执行update的更新语句,就是相当于,更新了这条数据的name属性,其他不会改变,可以用session.saveorupdate()方法,即如果对象没在缓存里就save在缓存里就update,所谓的缓存就是存储你和数据库相关联的持久化对象的地方

session.save是有返回值的返回值是一个序列化对象,也就是主键如果你的实体主键是id的话,那么它会返回新加入的id这个就是成功与否的依据咯

网站首页 | 网站地图
All rights reserved Powered by www.jcst.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com