Hibernateredis 持久化 mysql操作 MySQL 数据库 有报错,但仍然成功写入数据库

收藏一下hibernate操作数据库的常用方法,保存,修改,读取,删除等 - SSH教程 - ab蓝学网
当前位置: &
收藏一下hibernate操作数据库的常用方法,保存,修改,读取,删除等
简介:这篇文章用于总结hibernate操作数据库的各种方法一、query方式1、hibernate使用原生态的sql语句执行数据库查询有些时候有些开发人员总觉得用hql语句不踏实,程序出现了错误,就猜测因...
这篇文章用于总结hibernate操作数据库的各种方法
一、query方式
1、hibernate使用原生态的sql语句执行数据库查询
有些时候有些开发人员总觉得用hql语句不踏实,程序出现了错误,就猜测因为不是原生态的sql语句,数据库不支持,因此情愿选择回到jdbc时代。这样既耗时耗力,又破坏面向对象的编程。其实,hibernate已经考虑到这个问题,hibernate可以执行原生态的sql语句,正对每种数据库,你可以写对应的sql语句,然后用createSQLQuery(sql)即可。
&* 本地sql的检索方式,使用原生态的sql语句检索
Session session = this.getSession();&
String sql = "select * from course where cid=:id";&
Query query = session.createSQLQuery(sql);// 本地SQL检索方式 &
query.setInteger("id", c_id);&
query.list();// 返回持久化的list&
& &* 本地sql的检索方式,使用原生态的sql语句检索
& Session session = this.getSession();
& String sql = "select * from course where cid=:id";
& Query query = session.createSQLQuery(sql);// 本地SQL检索方式
& query.setInteger("id", c_id);
& query.list();// 返回持久化的list2、query执行查询操作(基本方式,字符串连接方式生成hql语句)
query执行查询操作,可以返回唯一对象或者是对象列表
(1)query返回对象列表
&* hql的检索方式,执行查询数据库操作,返回对象的列表
&* 采用hql语句连接方式
Session session = this.getSession();&
String hql = "select * from CourseDO where CId="+id+"";&
Query query = session.createQuery(hql);// 本地SQL检索方式 &
query.list();// 返回持久化的list&
& &* hql的检索方式,执行查询数据库操作,返回对象的列表
& &* 采用hql语句连接方式
& Session session = this.getSession();
& String hql = "select * from CourseDO where CId="+id+"";
& Query query = session.createQuery(hql);// 本地SQL检索方式
& query.list();// 返回持久化的list
(2)query返回唯一对象
&* hql的检索方式,执行查询数据库操作,返回唯一对象
&* 采用hql语句连接方式
Session session = this.getSession();&
String hql = "select * from CourseDO where CId="+id+"";&
Query query = session.createQuery(hql);// 本地SQL检索方式 &
query.uniqueResult();// 返回持久化的list 来于
& &* hql的检索方式,执行查询数据库操作,返回唯一对象
& &* 采用hql语句连接方式
& Session session = this.getSession();
& String hql = "select * from CourseDO where CId="+id+"";
& Query query = session.createQuery(hql);// 本地SQL检索方式
& query.uniqueResult();// 返回持久化的list3、query执行查询操作
hql采用参数方式,其中参数绑定方式分为两种:按照名字绑定,按照位置绑定
(1)hql参数绑定采用按照名字绑定
&* hql的检索方式,执行查询数据库操作,返回对象的列表
&* 参数绑定的形式分为按名字绑定,按位置绑定 此处是按照名字绑定
Session session = this.getSession();&
String hql = "select * from CourseDO where CId=:id";&
Query query = session.createQuery(hql);// 本地SQL检索方式 &
query.setInteger("id", c_id);// 名字绑定参数 &
query.list();// 返回持久化对象的list列表&
& &* hql的检索方式,执行查询数据库操作,返回对象的列表
& &* 参数绑定的形式分为按名字绑定,按位置绑定 此处是按照名字绑定
& Session session = this.getSession();
& String hql = "select * from CourseDO where CId=:id";
& Query query = session.createQuery(hql);// 本地SQL检索方式
& query.setInteger("id", c_id);// 名字绑定参数
& query.list();// 返回持久化对象的list列表
(2)hql参数绑定采用按照位置绑定
&* hql的检索方式,参数绑定的形式分为按名字绑定,按位置绑定 此处是按照位置绑定
String hql = "from CourseDO where CId=?";&
Session session = this.getSession();&
Query query = session.createQuery(hql);&
query.setParameter(0, c_id);// 位置绑定方式 &
query.uniqueResult();// 检索单个对象,返回唯一值&
& &* hql的检索方式,参数绑定的形式分为按名字绑定,按位置绑定 此处是按照位置绑定
& String hql = "from CourseDO where CId=?";
& Session session = this.getSession();
& Query query = session.createQuery(hql);
& query.setParameter(0, c_id);// 位置绑定方式
& query.uniqueResult();// 检索单个对象,返回唯一值4、query执行更新,删除操作
利用query的executeUpdate()方法实现
&* query执行更新,删除等非查询语句
String hql = "delete from CourseDO where CId=? and Time=?";&
Session session = this.getSession();&
Query query = session.createQuery(hql);&
query.setParameter(0, c_id);// 位置绑定方式 &
query.setDate(1, new Date());// 位置绑定方式,设置为Date类型 &
query.executeUpdate();// 执行delete,update和insert into 语句&
& &* query执行更新,删除等非查询语句
& String hql = "delete from CourseDO where CId=? and Time=?";
& Session session = this.getSession();
& Query query = session.createQuery(hql);
& query.setParameter(0, c_id);// 位置绑定方式
& query.setDate(1, new Date());// 位置绑定方式,设置为Date类型
& query.executeUpdate();// 执行delete,update和insert into 语句二、hibernate模版方法
利用hibernate模版方法执行hql语句非常简单,但是有时候不是那么方便,可以自己选择使用。
1、hibernateTemplate查询数据库
&* 利用hibernate模版方法进行查询,绑定参数形式
String hql = "from CourseDO where CId=? and Date=?";&
List&CourseDO& courseDOs = getHibernateTemplate().find(hql, c_id,&
& & & & new Date());&
& &* 利用hibernate模版方法进行查询,绑定参数形式
& String hql = "from CourseDO where CId=? and Date=?";
& List&CourseDO& courseDOs = getHibernateTemplate().find(hql, c_id,
& & new Date());2、hibernateTemplate更新数据
&* 利用hibernate模版方法进行更新,绑定参数形式
List&CourseDO& courseDOs = getHibernateTemplate().update(courseDO);&
& &* 利用hibernate模版方法进行更新,绑定参数形式
& List&CourseDO& courseDOs = getHibernateTemplate().update(courseDO);3、hibernateTemplate插入数据
&* 利用hibernate模版方法进行插入,绑定参数形式
List&CourseDO& courseDOs = getHibernateTemplate().save(courseDO);&
& &* 利用hibernate模版方法进行插入,绑定参数形式
& List&CourseDO& courseDOs = getHibernateTemplate().save(courseDO);4、hibernateTemplate删除数据
&* 利用hibernate模版方法进行删除,绑定参数形式
List&CourseDO& courseDOs = getHibernateTemplate().delete(courseDO);&
& &* 利用hibernate模版方法进行删除,绑定参数形式
& List&CourseDO& courseDOs = getHibernateTemplate().delete(courseDO);
如果觉得《收藏一下hibernate操作数据库的常用方法,保存,修改,读取,删除等》不错,请把本站告诉您身边的朋友!
转载注明本文地址:
正在加载 收藏一下hibernate操作数据库的常用方法,保存,修改,读取,删除等 评论...关于数据库里cascade的用法,在MySQL和Hibernate是不同的
关于数据库里cascade的用法,在MySQL和Hibernate是不同的
?在数据库里,进行增加、修改、删除记录的时候,经常会涉及到父子关系的表。例如:有省份表和城市表,其中城市表有一个外键province_id引用到省份表的主键。这样,可以把省份表看成是父表,把城市表看成是子表,城市表记录的存在依赖于省份表的记录。(文中提到的例子,所有的代码在附件里都有,所以这里的描述从简)一、在MySQL里的cascade以下直接在MySQL的控制台操作省份表和城市表在省份表增加一条“广东”的记录,在城市表增加一条“广州”的记录,并且把“广州”的外键引用到“广东”的主键。“广州”的存在依赖于“广东”,如果删除省份表的“广东”,将会影响到城市表的“广州”。根据城市表的外键约束的on delete设置,有如下三种情况:1、外键没有on delete的设置:当删除“广东”的时候,MySQL会报错,删除失败。2、外键设置为on delete cascade:当删除“广东”的时候,同时把“广州”也删除。3、外键设置为on delete set null:当删除“广东”的时候,“广州”的外键province_id会被自动设置为null,即“广州”脱离了对“广东”的依赖关系。二、在Hibernate里的cascade以下用Hibernate来操作省份表和城市表首先,在hibernate.cfg.xml文件配置好连接MySQL数据库的相关属性(请在那里修改登陆数据库的密码)。然后,为省份表和城市表添加相关的POJO类和XML映射文件。用SQL语句建表(在附件的test_cascade.sql里),城市表有一个外键province_id引用到省份表的主键,并把这个外键设置为on delete cascade。这个外键约束,在Hibernate变成了双向的映射关系:City类有一个类型为Province的province属性,关联到省份表,在映射文件中是many-to-one的关系;Province类有一个Set&City&的cities属性,关联到城市表,在映射文件中是one-to-many的关系。在Hibernate的映射文件里,同样可以设置cascade属性来控制父子关系。通常在父表设置cascade属性,有以下几种情况:1、没有设置cascade属性用方法addInNoCascade()增加记录“广东”和“广州”(方法在类CityManager里,以下同),再用方法delete()删除“广东”,将会出现异常,系统会说因为“广东”被城市表外键关联了而不能删除。用SQL建表时,已经把外键设为on delete cascade,怎么不能把“广东”删除的同时,级联删除“广州”呢?用MyEclipse查看城市表,发现有两个外键,如图所示:第2个外键是用SQL建表时生成的,设置了on delete cascade;而第1个外键应该是用Hibernate操作数据库时,Hibernate自动建立的。第1个外键的On delete被设置为No action,因此删除“广东”的时候,受到这个外键的限制,导致删除失败。2、设置cascade属性为delete-orphan在映射文件Province.hbm.xml中,在one-to-many关系对应的Set里,设置cascade="delete-orphan",此功能与MySQL里设置外键设置为on delete cascade相同。再用方法delete()删除“广东”,删除成功。即是,设置cascade为delete-orphan以后,对删除父表记录的时候,会同时删除子表的相关记录。3、设置cascade属性为allcascade的属性,除了可以是delete-orphan,还可以是create、update、delete、all等等。all代表除 delete-orphan以外的所有属性值,当设置cascade为all以后,对父表记录的增加、修改操作,会影响到子表的相关记录。在映射文件Province.hbm.xml中,在one-to-many关系对应的Set里,设置cascade="all"。用方法 addInCascadeOfAll()增加记录“广东”,方法里只有save“广东”,并没有save“深圳”,只是用属性关联了“广东”和“深圳”的关系。结果显示,深圳也被添加到数据库里,这就是cascade="all"的作用,使对父表的操作影响到子表。注意:A、delete-orphan是一个特别的属性值,只能应用在one-to-many关系的cascade属性。B、cascade属性通常在one-to-one和one-to-many关系里应用,不推荐在many-to-one或者many-to- many关系里应用。三、总结1、MySQL里设置cascade和在Hibernate设置cascade是不同的。在MySQL里设置了cascade,并不能对Hibernate的操作起到作用,原因是Hibernate自动为子表添加了外键。2、使用级联(cascade)功能,方便了数据库的操作,使得操作一个表的记录会影响到其他表的记录。但是,级联功能会带来安全隐患。特别是在 Hibernate里,修改一个POJO对象的映射引用属性,会导致该引用属性所对应的POJO对象受到影响。例如,把“广东”的 Set&City&类型的cities属性清空(即对集合Set调用clear()方法),则会导致把引用“广东”的“深圳”删除了。因此,使用级联功能时要小心谨慎。转:
作者: jes.shaw
14:06 原文链接
阅读: 3 评论: 0
Nhibernate 要求model实体类对于lazy=true ,字段属性前需要加 virtual
sqlserver2005和oracle10g的
httpd.conf
目录中以下几行的注释
#change here start
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy
将一个完整的.war包部署到
容器中,启动后报如下错误:
15:04:48,632 ERROR [ContextLoader] Context initialization failed
org.springframework.beans.factory.BeanCreationExcept
为MyEclipse 7.0安装propedit插件,以方便直接在properties文件中编写中文内容,保存文件时,propedit插件会自动将所有中文内容转化成Unicode编码。因为我的MyEclipse已经是8.5版本,但8.5并不支持
在SSH框架中使用Spring的好处 在SSH框假中spring充当了管理容器的角色。我们都知道
用来做持久层,因为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不用书写大量的S
action中方法只能接收String,比如jsp页面checkbox表单
&input type=checkbox name=select value=a/&
&input type=checkbox name=select value=b/&
&input type=checkbox n
首先安装jdk,因为这个是安装
的基础,同时也是MyEclipse使用的基础(虽然MyEclipse自带Java编译运行环境,但是我们一般都不用它的);然后分别安装MyEclipse和
(后两者无顺序
??? 世界上,优秀框架常有,Spring这种框架却不常有。它代表不仅仅是一个框架,更是一种思想。如果说,框架是编程技术的体现,那么Spring就编程之道的完美体现。
??? 编程之道,就在于高类聚,松
好久没有写技术总结了,从Flex3研究到Flex4,感觉现在需要写点东西出来,跟大家分享一下,也很高兴转载。
步入正题,Flex4在语法上与Flex3有点区别,研究过3的人对于4来说问题不大,如果直接研究4
以下解释来自于seam的官方文档。
如果要访问seam中来自于ajax请求的会话组件,则访问请求必须要进行排队,因为会话组件不允许并发请求。如果服务器组件花了很长时间来处理一个请求的时候,另外一个
Powered by
[ RssXN(build:
070517 Asp.net 2.0)]
每隔1小时自动更新一次解决hibernate+mysql写入数据库乱码 - CSDN博客
数据库通过hibernate自动的写入entity类。但是插入到mysql数据库时,出现中文乱码问题。我把所有涉及到的文件都修改成utf8编码,但是还是无效。
昨晚自己认为是mysql的问题,搞了好久,还是没解决。今天早上,灵机一动,想:也许是hibernate的问题。就上网搜‘hibernate mysql编码问题’,果然解决了,好开心啊。
同时也再想,我们遇到的问题,其实有很多解决办法,只是我们找错了解决方向。
下面我贴出答案,同时感谢网友,
hibernate.cfg.xml加上属性.
&property name=&connection.useUnicode&&true&/property&
&property name=&connection.characterEncoding&&UTF-8&/property&
mysql 的驱动用3.0.15以上版本的,
加个Filter, 使用UTF-8字符集就可以了,
若使用Spring则写在spring中的sessionFactory里即可。
&?xml version='1.0' encoding='UTF-8'?&
&!DOCTYPE hibernate-configuration PUBLIC
&-//Hibernate/Hibernate Configuration DTD 3.0//EN&
&http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd&&
&!-- Generated by MyEclipse Hibernate Tools. --&
&hibernate-configuration&
&session-factory&
&property name=&connection.username&&root&/property&
&property name=&connection.url&&
jdbc:mysql://localhost:3306/hibernate_table
&/property&
&property name=&dialect&&
org.hibernate.dialect.MySQLDialect
&/property&
&property name=&myeclipse.connection.profile&&
mySql hibernatetable
&/property&
&property name=&connection.password&&&/property&
&property name=&connection.driver_class&&
com.mysql.jdbc.Driver
&/property&
&property name=&connection.useUnicode&&true&/property&
&property name=&connection.characterEncoding&&UTF-8&/property&
&property name=&show_sql&&true&/property&
&property name=&format_sql&&true&/property&
&mapping resource=&cn/com/hibernate/Demo/Guestbook.hbm.xml& /&
&mapping resource=&cn/com/hibernate/Demo/GMapping.hbm.xml& /&求教大神为什么我用Hibernate网mysql里写入中文会报错,我的mysql字符集和Hibernate配置的字符集是utf8-中国学网-中国IT综合门户网站
> 求教大神为什么我用Hibernate网mysql里写入中文会报错,我的mysql字符集和Hibernate配置的字符集是utf8
求教大神为什么我用Hibernate网mysql里写入中文会报错,我的mysql字符集和Hibernate配置的字符集是utf8
转载 编辑:李强
为了帮助网友解决“求教大神为什么我用Hibernate网m”相关的问题,中国学网通过互联网对“求教大神为什么我用Hibernate网m”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:求教大神为什么我用Hibernate网mysql里写入中文会报错,我的mysql字符集和Hibernate配置的字符集是utf8,具体解决方案如下:解决方案1:;club_localhost&#92每次连接的编码都设置为utf-8试试.url=jdbc\:3306&#47:/&#47.connection:mysql&#92解决方案2:我就是这么设置的。解决方案3:。。。。。。。通过对数据库的索引,我们还为您准备了:问:这是错误提示 java.sql.BatchUpdateException: Incorrect string value:...答:每次连接的编码都设置为utf-8试试 database.connection.url=jdbc\:mysql\://localhost\:3306/club_test?useUnicode=true&characterEncoding=UTF-8===========================================问:十分感谢答:因为ejb是重量级的,然后就出来了ssh,相对于ejb来说是轻量级的。===========================================问:&?xml version="1.0" encoding="utf-8"?& &!DOCTYPE hibernate-mapping ...答:提示的蛮明显的嘛,找不到这个类 com.mycompany.domain.LeaveMessage。建议: 查看类包结构,以及大小写是否正确 检查代码是否正常编译了 ===========================================问:现在又2张表 一个用户表,一个订单表, 做了双向关联,问题是这样,一开...答:你先查询一下,再做删除或修改的动作,就能级联的上.===========================================问:报这个错误了。。。 上网搜了,说是有一个具有相同值的不同对象已经与和 ...答:hibernate在进行修改的时候,首先会从数据库把这条数据load出来,这时候在你的session缓存中就会有这条数据,你可以Session session=HibernateSessionFactory.getSession() session.clear();清空一下session就好了===========================================问:Configuration cfg = new Configuration(); SchemaExport se = new Sche...答:Configuration cfg = new Configuration(); //得到配置,默认的配置文件名。 SchemaExport se = new SchemaExport(cfg);//创建导出对象 se.create(true, true);//执行导出 将DATA导出成SQL语句===========================================问:Configuration cfg = new Configuration(); SchemaExport se = new Sche...答:最好先把基础看看然后再找个简单的案例学一下,很快就容易上手了!===========================================问:&?xml version='1.0' encoding='UTF-8'?& &!DOCTYPE hibernate-configur...答:你需要先在junit里面运行你的代码 这样hibernate才能查看你的表 然后看到没有表才回去执行正向工程 望采纳!===========================================问:String sql = "select stc.`Invoice_category`,stc.Category_No,stc.Inv...答:第一:直接使用HibernateTemplate 你的sql中from+对象名称(不是表名)。 第二:在hibernate中使用原生sql需要继承hibernate原来的类,public Object doInHibernate(final Session session) throws HibernateException, SQLException=========================================== 那应该是电脑配置太低了望采纳===========================================我有,把你邮箱发给我,或者加我qq =========================================== 首先确定当时的网速,比方试试开网页的速度。如果网速可以的话,试着设置下风行,菜单-设置-选项-网络连接-监听端口改为默认值或是随机设定,试几个一定会有一个很好的。再...=========================================== 不支持移动3G,只能支持移动2G和联通2G、3G,1.2GhzCPU+1GBRAM+1GBrom这么强悍的配置基本上所有的游戏都不在话下,不同担心了,尽管玩吧,但是会带来更多的发热===========================================就是虽然开768p帧数会好很多,但就算用核显玩游戏,也喜欢用1080p。。。。。 另外... 那cpu就会成为拖累帧数的原因了,游戏本还是建议上标压i5 3230m或者4200m以上。。...=========================================== 你下载的东西网络资源少,所以会产生这种情况,不仿换个时间段试试,或者你把迅雷或旋风开着到明天早上也许下好了,祝你成功!=========================================== 1.下载安装腾讯管家2.连接手机数据线即可ROOTroot权限之后你就可以修改你手机几乎所有的东西可能是不愿意你修改和触碰的东西,因为他们有可能影响到手机的稳定,还容...===========================================GTX760M i5 4200MCPU 本本性能错哦===========================================多任务选四核芯的U较合适)CPU: AMD 速龙II X4 651(盒) 主频:3GHz ¥470 或; AMD 速龙II X4 651(盒) 主频:2.8GHz ¥435主板: 技嘉(GIGABYTE)GA-A75M-S2...===========================================M1860台式机采用Intel 奔腾双核 G620处理器,2G DDR3内存,500G硬盘,AMD Radeon H... 固态硬盘 外加独立显卡(或者用你原先机器上的显卡)这样一个主机也就4000左右 我的是...===========================================
本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助

我要回帖

更多关于 内存数据库 持久化 的文章

 

随机推荐