![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hibernate
文章平均质量分 79
Arthur0088
这个作者很懒,什么都没留下…
展开
-
SSH中文乱码
㈠页面显示中文乱码 ㈡传递参数中文乱码 ㈢国际化资源文件乱码 下面就这三中情况介绍怎么在具体项目中处理这些乱码问题。而对于整体的处理思想,是要统一编码为: UTF-8.(以myeclipse6支持的struts1.3为准) ㈠页面显示中文乱码 对于在页面中显示出现乱码,这个问题比较简单,便是检查你的JSP文件里是不是出现了中文要处理,因为JSP默认的编码格式为“ISO-8859-1”,当JSP中出...原创 2009-07-23 15:52:58 · 173 阅读 · 0 评论 -
Hibernate中实体类或者属性名与数据库关键字发生冲突
在Hibernate中有一个类名为user,所以在进行关系映射生成表的时候会再数据库中建立一个名为user的表,但是在oracle数据库中,user是关键字,故会发生冲突,如下: ... <class name="user" table="user"> <id...2009-07-21 14:54:14 · 257 阅读 · 0 评论 -
Query接口的uniqueResult()方法
以前写代码,总免不了编写登陆部分。在获取user的时候,只可能返回一个user实例,或者为null。以前使用以下方法实现。 Java代码 public User get(String id){ Session session=HibernateUtil.getSessionFactory().openSession(); Stri...原创 2009-07-21 14:44:01 · 249 阅读 · 0 评论 -
HQL和Criteria
1. HQL是对象的查询语言,不同于SQL,HQL区分大小写,HQL查的是对象而不是表,HQL主要通过Query来操作: Query q = session.createQuery (hql); 。 from Persion; 。 from User user where user.name = :name; 。 from User u...2009-07-21 14:30:53 · 149 阅读 · 0 评论 -
对象的几种状态
对象一般分为3中状态: 1. 瞬时状态(transient):数据库中没有与之对应的值,超过作用域被JVM回收,一般是new出来且与session无关的对象 2. 持久状态(persistent):数据库中有鱼之对应的值,当与session有关联,并且当前的session没有关闭,事务没有提交;持久状态发生变化,在事务提交时会影响数据库(Hibernate能检测到) ...2009-07-21 13:45:12 · 861 阅读 · 0 评论 -
Hibernate中的session的几个主要方法
Session中的几个主要方法: 1. save,persist保存数据,persist在事务外不会产生insert一句 2. delete删除对象 3. update更像对象,如果数据库中没有数据,则抛出异常 4. get根据ID查询,会立刻访问数据库 5. load根据ID查询,返回代理,不会立即访问数据库 6. saveOrUpdate,...2009-07-21 13:37:41 · 172 阅读 · 0 评论 -
Hibernate中的get何load方法
Hibernate中有两个极为相似的方法get()与load(),他们都可以通过指定的实体类与ID从数据库中读取数据,并返回对应的实例,它们间的不同在于: 1. get是直接查询数据库,如果查不到就返回null,Load会首先从内存中装载,如果以前没有装载或查询出来,才开始查询数据库。 Hibernate中get方法和load方法的根本区别在于:如果你使用loa...2009-07-21 13:25:04 · 85 阅读 · 0 评论 -
Hibernate中的session
Hibernate中的Session与JSP中的四个作用范围之一的Session不同。 Hibernate中的Session是Hibernate中核心,它负责Hibernate所有操作数据的部分,比如:save、update方法等。 jsp中的session是一个可以理解为会话级的存储变量,是web间信息互访的载体,而Hibernate中的session一个全新的概念,可以理...2009-07-21 12:31:28 · 201 阅读 · 0 评论 -
Hibernate代码优化
在使用Hibernate中,都需要如下操作: 1. 知道Hibernate配置 Configuration config = new Configuration().configure() ; 2. 从配置中取得SessionFactory SessionFactory factory = config.buildSessionFactory() ; 3. 从S...2009-07-21 11:16:42 · 81 阅读 · 0 评论 -
HQL的命名参数
如下: ......String hql = "from user where name=? and sex=? and ....";Query q = s.createQuery (hql);q.setString (0,name);q.setString (1,sex);...... 从上段代码可看出,如果where后面的参数过多,在进...2009-07-21 15:02:28 · 272 阅读 · 0 评论 -
HQL接口分页查询
如下Query提供的方法可以实现分页: 1. setFirstResult 从第几条开始取记录 2. setMaxResult 一次取多少条记录 使用此方法进行分页,具有可移植性,下面写一段代码: HibernateUtil.javaprivate static final SessionFactory ses...2009-07-21 15:23:35 · 130 阅读 · 0 评论 -
Hibernate中多对多的关联关系
在Hibernate中,碰到多对多的关联关系时,一般将其转化为两个一对多的关联关系,此处 以老师与学生的关系举例,以下以代码说明: 老师类 (Teacher.java): public class Teacher { private int id ; private String name ; pri...2009-07-22 15:11:01 · 84 阅读 · 0 评论 -
Hibernate中一对一的关联关系2
在上次的一对一中,采用的card表中的id是从person表中的id获取的,id即是主键又是外 键,然而还可用用其他方法来实现一对一的关系,基于外键的one-to-one,可以描述成多 对一,加上unqiue="true"约束,如下: // 采用one-to-one外键的代码<one-to-one name="card" property-ref="person"...2009-07-22 14:45:45 · 85 阅读 · 0 评论 -
Hibernate一对一的关联关系
一对一关联关系此处通过一个人对应一个身份证,此处身份证类中的id不是通过自动生成, 而是从person表中获取person表中对应的id,表的设计如下: person表:PKid nameage card表:PF,FK1id useful_life 人类 (Person): ...2009-07-22 14:11:44 · 98 阅读 · 0 评论 -
Hibernate中一对多的关联关系
还是参照员工与部门的例子,从员工角度看,员工与部门是多对一的关联;而从部门角度 看,部门与员工则是一对多的关系,需要修改的代码如下: 部门类 (Department.java): public class Department { private int id ; private String name ; ...2009-07-22 13:29:25 · 110 阅读 · 0 评论 -
多对一关联关系的检索
还是以员工与部门的关系,在多对一的关联关系下,如果查询部门,则与单表的查询一样;如果查询员工信息,同时如何更好的返回部门信息是值得考虑的。首先说一下如何在添加的时候体现在Hibernate中多对一的关联好处: 员工与部门的配置已经在上一次中写出,此处只是简单的写一个添加功能,代码如下: ......// 实例化一个部门,并为其添加一个值Department dep...2009-07-22 11:41:22 · 171 阅读 · 0 评论 -
关联关系 -- 多对一
多对一 (员工-部门): 多个员工所于同一个部门,一个部门有多个员工,在Hibernate中用代码实现如下: 部门类 (Department.java): public class Department { private int id ; private String name ; ...getter/sette...2009-07-22 11:09:42 · 96 阅读 · 0 评论 -
Hibernate的关联关系
Hibernate中的主要关联关系: . 多对一 . 一对多 . 一对一 . 多对多 . 集合映射 . 组件映射2009-07-22 10:39:09 · 71 阅读 · 0 评论 -
Criteria查询方式
Criteria 查询更像是一种面向对象的查询方式,其没有类似SQL语句的查询语句,如下: Criteria c = s.createCriteria (User.class); // 类c.add (Restrictions.eq ("name",name)); // 添加查询条件,此处的eq代表等于,还有大于,小于等,第一个参数代表Java类中的属性...2009-07-21 15:33:14 · 152 阅读 · 0 评论 -
MyEclipse、Eclipse代码提示功能
如果是eclipse的 .提示功能没有了,照下边这样设置window->Preferences->Java->Editor->ContentAssist->Advanced 上面的选项卡Select the proposal kinds contained in the'default' content assist list: 中把 Other Java P...原创 2009-07-21 09:54:51 · 72 阅读 · 0 评论 -
Hibernate中VO类的限制
在编写Hibernate中的VO类时候,需要注重如下细节: 1. 必须有一个默认的构造函数,即没有任何参数的构造函数(必须的) 2. 有无意义的标示符id(主键) (可选) 3. 非final,对懒加载有影响 (可选) 如下:...2009-07-21 09:47:29 · 208 阅读 · 0 评论 -
Hibernate开发流程
一般编写Hibernate需要编写Java类、映射文件(*.hbm.xml)、数据库结构,一般有如下方法: 1. Java类 --> 映射 --> 表结构(由工具根据映射自动生成) (官方推荐的方法,也是面向对象的方法) 2. 从表结构开始 --> 用工具生成映射文件和Java类 (大多数使...2009-07-21 09:37:32 · 90 阅读 · 0 评论 -
Hibernate常见问题
1、判读Query.list()是否为空? 一般使用list() != null 或者list().size() > 0来判读,然后使用Query.list().get(x)来获取list中对象。其中前者list() != null判读的是list中是否有对象,后台list().size()是判读对象是否为空,一般判读方法:Query query = ......List list原创 2010-05-17 22:44:00 · 1042 阅读 · 0 评论 -
使用Hibernate获取最大值(max)的三种方法
使用Hibernate获取最大值(max)的三种方法 获取最大值的三种方法:1. 使用 hsqlInteger c = (Integer)dbt.getSession().createQuery("select max(a.ArticleId) from Article a " ).uniqueResult();System.out.println(c);注意:要加上别名“a”, a.Arti原创 2010-05-17 22:43:00 · 10878 阅读 · 0 评论 -
Hibernate缓存机制
缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能。Hibernate在查询数据时,首先到缓存中去查找,如果找到就直接使用,找不到的时候就会从物理数据源中检索,所以,把频繁使用的数据加载到缓存区后,就可以大大减少应用程序对物理数据源的访问,使得程序的运行性能明显的提升。Hibernate缓存分类Ses原创 2010-01-08 13:47:00 · 1175 阅读 · 1 评论 -
Hibernate中常见的20个问题
1问:Hibernate初始化时总是报错:java.lang.NoClassDefFoundError 11问:为什么在向数据库中插入长字符串时候部分自动丢失 在向数据库中增加一条新的条目时,发现如果文字(有英文字母,也有汉字)数量特别大,超过1000个,则每次通过Hibernate,向一个String类型的字段中增加数据时,只有几百个字可以增加进去,其他的自动丢失了。答:这是由于转载 2010-03-21 19:17:00 · 3511 阅读 · 0 评论 -
Hibernate annotation 详解
1.级联CASCADE属性的意义: 只有“关系标记”才有cascade属性:OneToOne ,OneToMany ,ManyToOne ,ManyToMany. 级联指的是当主控方执行操作时,关联对象(被动方)是否同步执行同一操作。 一个操作因级联cascade可能触发多个关联操作。前一个操作叫“主控操作”,后一个操作叫“关联操作”。转载 2010-03-05 12:28:00 · 3119 阅读 · 1 评论 -
Hibernate配置数据源、Hibernate数据库连接池
连接池概念: 以前我们程序连接数据库的时候,每一次连接数据库都要一个连接,用完后再释放。如果频繁的数据库操作,就会导致性能很低。连接池的出现,为开发过程提供了一个很好的管理平台。当程序中需要建立数据库连接时,只须从内存中取一个来用而不用新建。同样,使用完毕后,只需放回内存即可。而连接的建立、断开都有连接池自身来管理。同时,我们还可以通过设置连接池的参数来控制连接池中的连接数、每个连接的原创 2010-03-04 15:39:00 · 3214 阅读 · 1 评论 -
Hibernate MySQL 中文乱码问题
环境:Hibernate + MySQL4.1(MySQL的编码已设置为utf8)问题:通过Hibernate向MySQL写入中文后,通过Hibernate取回数据,在console中打印java对象显示正常。但在MySQL Query Browser中看到的是乱码,传给前端的Flex也是乱码。原因:Hibernate的基础还是JDBC,所以一样需要设置characterEncodin转载 2009-12-19 00:29:00 · 953 阅读 · 0 评论 -
org.hibernate.NonUniqueObjectException异常解决方法(2)
异常:org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session代码片段:注:以下为session打开的状态* 我手动构造了一个Photo对象Photo photo=new Photo();phot转载 2009-11-03 09:48:00 · 13209 阅读 · 4 评论 -
hibernate Restrictions用法
<br />方法 <br />说明 <br />Restrictions.eq <br />= <br />Restrictions.allEq <br />利用Map来进行多个等于的限制 <br />Restrictions.gt <br />> <br />Restrictions.ge <br />>= <br />Restrictions.lt <br /><<br />Restrictions.le <br /><= <br />Restrictions.between <br />BETWEEN原创 2011-01-18 17:38:00 · 1093 阅读 · 0 评论 -
Hibernate 配置文件precision与scale的说法
Oracle使用标准、可变长度的内部格式来存储数字。这个内部格式精度可以高达38位。 NUMBER数据类型可以有两个限定符,如: column NUMBER ( precision, scale) precision表示数字中的有效位。如果没有指定precision的话,Oracle将使用38作为精度。 scale表示数字小数点右边的位数,scale默认设置为0. 如果把scale设成负数,...原创 2009-09-23 09:38:32 · 145 阅读 · 0 评论 -
Hibernate配置文件
Hibernate包含两种配置文件,如下: 1. 类与表的映射文件(*.hbm.xml),部分代码如下: ...... <hibernate-mapping> /* name: 类的完整路径 table: 数据库中对应的表名 */ <class name="org.dreamw...2009-07-21 09:24:28 · 100 阅读 · 0 评论 -
hibernate 的 hbm与Annotation
1. 写在类定义上@Entity // 表明是实体类 @Table(name="person_db") // 映射到的表名 2. 主键修饰 @Id @GeneratedValue(strategy = GenerationType.AUTO)-----表中 auto_increment @Column(name = "id") // 数据库id 表示是主键,并...原创 2009-10-14 23:03:06 · 98 阅读 · 0 评论 -
Hibernate Annotations
Hibernate Annotations為Hibernate的擴充模組之一,如果您的JDK為5.0以上的版本,即可使用它所提供Annotation來於.java 檔案上,進行物件與表格的對映定義,在開發上,讓物件屬性的對映設定更貼近於程式碼。 Java Persistence API為Java EE 5.0平台所定義的標準資料庫物件對應及持久管理介面,為EJB 3.0規格之一,Hiber...原创 2009-10-14 09:27:02 · 130 阅读 · 0 评论 -
Hibernate中Criteria的完整用法
使用 Spring 和 Hibernate 进行开发,有感于Criteria 比较好用,在查询方法设计上可以灵活的根据 Criteria 的特点来方便地进行查询条件的组装。现在对Hibernate的Criteria 的用法进行总结: Hibernate 设计了CriteriaSpecification 作为Criteria 的父接口,下面提供了Criteria和DetachedCriter...原创 2009-10-13 13:04:39 · 80 阅读 · 0 评论 -
Hibernate3的DetachedCriteria支持
Hibernate3支持DetachedCriteria,这是一个非常有意义的特性!我们知道,在常规的Web编程中,有大量的动态条件查询,即用户在网页上面自由选择某些条件,程序根据用户的选择条件,动态生成SQL语句,进行查询。 针对这种需求,对于分层应用程序来说,Web层需要传递一个查询的条件列表给业务层对象,业务层对象获得这个条件列表之后,然后依次取出条件,构造查询语句。这里的一个难点是条件...原创 2009-10-13 10:37:35 · 94 阅读 · 0 评论 -
Hibernate删除操作
import org.hibernate.Query;import tt.TUser;import tt.TUserDAO;public class Delete {public static void main(String[] args)//主方法,用于运行二个删除操作的方法{ //Delete.deleteOne(13); //Delete.del...2009-09-25 12:35:12 · 587 阅读 · 0 评论 -
Hibernate session 方法总结
Session.get / load的区别: 1. 如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObejctNotFoundException。2. Load方法可返回实体的代理类类型,而get方法永远直接返回实体类。3. Load方法可以充分利用内部缓存和二级缓存中现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直...2009-09-23 10:26:33 · 102 阅读 · 0 评论 -
关于hibernate字段初始值的配置问题
在使用Hibernate配置文件生成表结构时,可以为表中的某个字段指定默认值,即使不用hibernate操作数据库,该字段仍然会保留默认值.现有一javaBean:public class ReplyMessage { private Integer id; // 主键 private Date time private String...原创 2009-09-23 10:01:24 · 111 阅读 · 0 评论