随笔分类 - hibernate
摘要:一,Hibernate日志问题 工程使用SLF4J,但日志文件一直没有看到Hibernate相关日志及showsql 二,Logback文件配置 修改Hibernate 日志输出指定为SLF4J,当修改了LOGBACK.xml 的日志输出文件后仍然也没看到hibernate相应日志 logback.
阅读全文
摘要:架构:SSH框架问题:多线程下的持久化操作异常No Session found for current thread出现环境:SSH框架,采用声明式事务, 通过sessionFactory.getCurrentSession() 获取SESSION,因为SPRING绑定事务到线程上,所以当new Thread()线程中去执行持久化操作时,就会产生异常No Session found for current thread解决方法:通过 实现ApplicationContextAware得到ApplicationContext,通过ApplicationContext的方法 getBean得到 s
阅读全文
摘要:第17章Native SQL查询你也可以使用你的数据库的Native SQL语言来查询数据。这对你在要使用数据库的某些特性的时候(比如说在查询提示或者Oracle中的CONNECT关键字),这是非常有用的。这就能够扫清你把原来直接使用SQL/JDBC 的程序迁移到基于 Hibernate应用的道路上的障碍。Hibernate3允许你使用手写的sql来完成所有的create,update,delete,和load操作(包括存储过程)17.1.创建一个基于SQL的QuerySQL查询是通过SQLQuery接口来控制的,它是通过调用Session.createSQLQuery()方法来获得List
阅读全文
摘要:第16章 条件查询(Criteria Queries)具有一个直观的、可扩展的条件查询API是Hibernate的特色。16.1.创建一个Criteria实例org.hibernate.Criteria接口表示特定持久类的一个查询。Session是Criteria实例的工厂。Criteria crit = sess.createCriteria(Cat.class);crit.setMaxResults(50);List cats = crit.list();16.2.限制结果集内容一个单独的查询条件是org.hibernate.criterion.Criterion接口的一个实例。org.h
阅读全文
摘要:第15章HQL: Hibernate查询语言Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。15.1.大小写敏感性问题除了Java类与属性的名称外,查询语句对大小写并不敏感。 所以SeLeCT与sELEct以及SELECT是相同的,但是org.hibernate.eg.FOO并不等价于org.hibernate.eg.Foo并且foo.barSet也不等价于foo.BARSET。本手册中的HQL关键字将使用小写字母. 很多用户发现使用完全大写的
阅读全文
摘要:在看hibernate的官方文档时,看到关于缓存的介绍。hibernate在缓存管理上做的很好,具体使用,本章不做讲解,本篇主要研究EhCache的用法。其中hibernate使用到的缓存提供商列表如下:CacheProvider classTypeCluster SafeQuery Cache SupportedHashtable (not intended for production use)org.hibernate.cache.HashtableCacheProvidermemoryyesEHCacheorg.hibernate.cache.EhCacheProvidermemory
阅读全文
摘要:Mysql中文问题在hibernate中需要在Hibernate.cfg.xml配置文件中的<propertyname="connection.url">jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=GB2312</property>注意"&",在html中表示&,这里需要转义Hibernate配置属性属性名用途hibernate.dialect一个HibernateDialect类名允许Hibernat
阅读全文
摘要:常用的hibernate annotation标签如下:@Entity--注释声明该类为持久类。将一个Javabean类声明为一 个实体的数据库表映射类,最好实现序列化.此时,默认情况下,所有的类属性都为映射到数据表的持久性字段.若在类中,添加另外属性,而非映射来数据库的, 要用下面的Transient来注解.@Table(name="promotion_info") --持久性映射的表(表名="promotion_info).@Table是类一级的注解,定义在@Entity下,为实体bean映射表,目录和schema的名字,默认为实体bean的类名,不带包名.@
阅读全文
摘要:1. 关于hibernate缓存的问题:1.1. 基本的缓存原理Hibernate缓存分为二级,第一级存放于session中称为一级缓存,默认带有且不能卸载。第二级是由sessionFactory控制的进程级缓存。是全局共享的缓存,凡是会调用二级缓存的查询方法 都会从中受益。只有经正确的配置后二级缓存才会发挥作用。同时在进行条件查询时必须使用相应的方法才能从缓存中获取数据。比如Query.iterate()方法、load、get方法等。必须注意的是session.find方法永远是从数据库中获取数据,不会从二级缓存中获取数据,即便其中有其所需要的数据也是如此。查询时使用缓存的实现过程为:首先查
阅读全文