但是我们只要的是,ehcache下所有包

 

ehcache  jar包:hibernate-release-4.3.4.Finalliboptionalehcache下所有包

数据,不用现在加载,当我们要用的时候,才去加载

return new Configuration().configure().buildSessionFactory().openSession()

[java] view plain copy

public static void main(String[] args) {
 
  DeptEntity dept = getDept("402882e762ae888d0162ae888e420000");

  1. package com.test.pojo;  
  2. import org.hibernate.HibernateException;  
  3. import org.hibernate.Session;  
  4. import org.hibernate.SessionFactory;  
  5. import org.hibernate.cfg.Configuration;  
  6. import org.hibernate.service.ServiceRegistry;  
  7. import org.hibernate.service.ServiceRegistryBuilder;  
  8. import org.junit.BeforeClass;  
  9. import org.junit.Test;  
  10.   
  11. public class UserTest {  
  12.       
  13.     private static SessionFactory sessionFactory = null;  
  14.     @BeforeClass  
  15.     public static void beforeClass() {  
  16.         Configuration configuration = new Configuration();  
  17.           
  18.   
  19.         try {  
  20.             configuration.configure();  
  21.         } catch (HibernateException e) {  
  22.             // TODO Auto-generated catch block  
  23.             e.printStackTrace();  
  24.         }  
  25.               
  26.           
  27.         ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();  
  28.         sessionFactory = configuration.buildSessionFactory(serviceRegistry);  
  29.     }   
  30.     @Test  
  31.     public void testEhcache() {  
  32.         Session session = sessionFactory.openSession();  
  33.         session.beginTransaction();  
  34.         User u1 = (User) session.load(User.class, 3);  
  35.         System.out.println(u1.getName());  
  36.         session.getTransaction().commit();  
  37.         session.close();  
  38.         Session session2 = sessionFactory.openSession();  
  39.           
  40.         session2.beginTransaction();  
  41.         User u2 = (User) session2.load(User.class, 3);  
  42.         System.out.println(u2.getName());  
  43.         session2.getTransaction().commit();  
  44.         session2.close();  
  45.     }  
  46. }  

运行效果:

<property name="name" type="string"></property>

 图片 1图片 2

集合延迟加载初始化失败,不能初始化一个代理。就是集合在非一对一对象关系中,为了节省资源是默认延迟加载,而get方法又是非延迟加载,所以在执行完一次数据库查询后就执行session.close();关闭了session,而集合是延迟加载,在使用集合时再加载,此时session已经关闭,所以得不到代理。解决方法:可以在主表的hbm配置文件中,在<set>标签里设置lazy="false",集合就不延迟加载了,因此在执行get方法时,集合也获取到了,就不会出现延迟加载问题了。

  1. package com.test.pojo;  
  2. import java.util.List;  
  3.   
  4. import org.hibernate.HibernateException;  
  5. import org.hibernate.Session;  
  6. import org.hibernate.SessionFactory;  
  7. import org.hibernate.cfg.Configuration;  
  8. import org.hibernate.service.ServiceRegistry;  
  9. import org.hibernate.service.ServiceRegistryBuilder;  
  10. import org.junit.BeforeClass;  
  11. import org.junit.Test;  
  12.   
  13. public class UserTest {  
  14.       
  15.     private static SessionFactory sessionFactory = null;  
  16.     @BeforeClass  
  17.     public static void beforeClass() {  
  18.         Configuration configuration = new Configuration();  
  19.           
  20.   
  21.         try {  
  22.             configuration.configure();  
  23.         } catch (HibernateException e) {  
  24.             // TODO Auto-generated catch block  
  25.             e.printStackTrace();  
  26.         }  
  27.               
  28.           
  29.         ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();  
  30.         sessionFactory = configuration.buildSessionFactory(serviceRegistry);  
  31.     }   
  32.     @SuppressWarnings("unchecked")  
  33.     @Test  
  34.     public void testListEhcache() {  
  35.         Session session = sessionFactory.openSession();  
  36.         session.beginTransaction();  
  37.         List<User> users1 = (List<User>)session.createQuery("from User").setCacheable(true).list();  
  38.         for(User user : users1) {  
  39.             System.out.println(user.getName());  
  40.         }  
  41.         session.getTransaction().commit();  
  42.         session.close();  
  43.           
  44.         Session session2 = sessionFactory.openSession();  
  45.         session2.beginTransaction();  
  46.         List<User> users2 = (List<User>)session2.createQuery("from User").setCacheable(true).list();  
  47.         for(User user : users2) {  
  48.             System.out.println(user.getName());  
  49.         }  
  50.         session2.getTransaction().commit();  
  51.         session2.close();  
  52.     }  
  53. }  

    where
        products0_.category_id=?
ID:  1  name:java SE应用程序设计 price: 78.00
这里可以明确的告诉我们,当我们要加载Set集合的时候,这时候才去加载,而上面的例子,说明的是我们不加载的时候

public void add(Person per){//添加

create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
create-drop :每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。
validate::启动时验证现有schema与你配置的hibernate是否一致,如果不一致就抛出异常,并不做更新。

 

 输出结果:

/**
 *
 * @author XHW
 *
 * @date 2011-7-18
 *
 */
public class HibernateTest {
 public static void main(String[] args) {
  new HibernateTest().update();
 }
 public void update(){
  Session session=HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();
  session.beginTransaction();
  Category category=(Category)session.get(Category.class, 1);
  System.out.println("id:"+category.getId()+"  ,name:"+category.getName()+", description:"+category.getDescription());
  
  Set<Product> products=category.getProducts();
  
  session.getTransaction().commit();  
 }
 
 
}

}

 

Exception in thread "main" org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.javakc.hibernate.onetomany.entity.DeptEntity.emp, could not initialize proxy - no Session
at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:566)
at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:186)
at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:545)
at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:124)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:326)
at java.lang.String.valueOf(String.java:2827)
at java.io.PrintStream.println(PrintStream.java:771)
at com.javakc.hibernate.onetomany.action.TestAction.main(TestAction.java:74)

而hibernate3的配置是

一般情况下,Hibernate会默认给我们设置延迟加载。lazy="true" ,这样会提升我们的系统性能,所以一般情况下,我们不会去

Person per = (Person) session.load(Person.class, id);//get获取单个对象

[java] view plain copy

private static DeptEntity getDept(String did){
  Session session = sessionFactory.openSession();
  DeptEntity dept = (DeptEntity)session.get(DeptEntity.class, did);
  session.close();
  return dept;
}

 

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Hibernate:
    select
        category0_.id as id1_0_,
        category0_.name as name1_0_,
        category0_.description as descript3_1_0_
    from
        users.category category0_
    where
        category0_.id=?
id:1  ,name:java, description:java好啊
Hibernate: 
    select
        products0_.category_id as category2_1_,
        products0_.id as id1_,
        products0_.id as id0_0_,
        products0_.category_id as category2_0_0_,
        products0_.name as name0_0_,
        products0_.price as price0_0_,
        products0_.descripton as descripton0_0_
    from
        users.product products0_

* createQuery.setInteger(0,(currentPage-1)*pageSize);

User.java

  //dept.getEmp()得到子表的记录集合
  System.out.println(dept.getEmp());

 

import java.util.Set;

<property name="format_sql">true</property>

四:接下来我们就可以来进行我们的实体开发了:

运行结果:

 结果:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Hibernate:
    select
        category0_.id as id1_0_,
        category0_.name as name1_0_,
        category0_.description as descript3_1_0_
    from
        users.category category0_
    where
        category0_.id=?
id:1  ,name:java, description:java好啊

<!-- hibernate自动生成表 -->

 

}

list二级缓存测试

延迟加载在Hibernate中是默认延迟加载;

createQuery.setInteger(0,id);

 

UserTest测试类:

测试代码二:

}

 图片 3图片 4

hibernate.cfg.xml

代码:

// 7关闭Session

 图片 5图片 6

 

/**
 *
 */
package com.b510.examples;

beginTransaction.commit();//事务提交

 

User实体类

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"">
<!--
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.b510.examples.Category" table="category" catalog="users">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="increment" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="500" />
        </property>
        <property name="description" type="java.lang.String">
            <column name="description" length="500" />
        </property>
        <set name="products" inverse="true" lazy="false">
            <key>
                <column name="category_id" />
            </key>
            <one-to-many class="com.b510.examples.Product" />
        </set>
    </class>
</hibernate-mapping>

createQuery.executeUpdate();//执行修改或删除

 

 

import org.hibernate.Session;

//saveOrUpdate 添加或修改,有id且存在为修改或则为添加

总结:了解了Hibernate的基本作用,学会了使用其来进行增删改查操作,算是工作之余的一点收获吧,以后还得继续坚持发帖,不断学习!

转载:

代码:

createQuery.setFloat(1, stu.getScore());

  1. <span style="font-size:14px;"><hibernate-mapping package="toone.com.cn.bo.domain">  
  2.     <class name="User" table="user"><!--这里的table值对应数据库中的表名;如果没有table值,默认等于类名小写 -->  
  3.         <id name="id" column="id">  
  4.             <generator class="native"></generator><!--采用主键自增长方式-->  
  5.         </id>  
  6.         <property name="name" column="name"/><!-- 这里的column值对应数据库中的属性名;如果没有column值,默认等于属性名 -->  
  7.         <property name="birthday" column="birthday"/>  
  8.     </class>  
  9. </hibernate-mapping></span>  

项目结构如下
 
图片 7  

虽然有:  Set<Product> products=category.getProducts(); 代码,即:不处理集合对象。但是我们只要的是:

/*hibernate分页错误写法

 

 

/**
 *
 * @author XHW
 *
 * @date 2011-7-18
 *
 */
public class HibernateTest {
 public static void main(String[] args) {
  new HibernateTest().update();
 }
 public void update(){
  Session session=HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();
  session.beginTransaction();
  Category category=(Category)session.get(Category.class, 1);
  System.out.println("id:"+category.getId()+"  ,name:"+category.getName()+", description:"+category.getDescription());
  
  Set<Product> products=category.getProducts();
  for(Product product:products){
   System.out.println("ID:  "+product.getId()+"  name:"+product.getName()+" price: "+product.getPrice());
  }  
  session.getTransaction().commit();  
 }
 
 
}

beginTransaction.commit();//事务提交

[java] view plain copy

注:hibernate 4.2.5版本ehcache缓存不依赖commons-logging-1.1.1.jar,需要的是slf4j-api-1.6.1.jar

import java.util.Set;

Query createQuery = session.createQuery("from Dept where dname like ?");

[java] view plain copy

  1. <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>  

import org.hibernate.Session;

public void updateStudent2(Student stu) {

[java] view plain copy

ehcache.xml

运行结果:

Session session = HibernateUtils.getSession();

 

hibernate使用版本是:hibernate-release-4.3.4.Final

取消延迟加载:

<!-- Generated by MyEclipse Hibernate Tools.                -->

  1. <span style="font-size:14px;">package toone.com.cn;  
  2. import java.util.Date;  
  3.   
  4.   
  5. import toone.com.cn.bo.User;  
  6. import toone.com.cn.util.HibernateUtils;  
  7.   
  8.   
  9. public class Main {  
  10.     public static void main(String[] args){  
  11.         User user = new User();  
  12.         user.setName("Kobi");  
  13.         user.setBirthday(new Date());  
  14.         HibernateUtils.add(user);//添加  
  15.         user.setName("Jams");  
  16.         HibernateUtils.update(user);//修改  
  17.         HibernateUtils.delete(user);//删除  
  18.         User user1 = (User) HibernateUtils.findById(User.class, user.getId());//查找  
  19.         System.out.println(user1.getName());  
  20.           
  21.     }  
  22. }</span>  
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <ehcache xmlns:xsi=""  
  3.     xsi:noNamespaceSchemaLocation=""  
  4.     updateCheck="false">  
  5.     <!--  
  6.         name:cache唯一标识   
  7.         eternal:缓存是否永久有效   
  8.         maxElementsInMemory:内存中最大缓存对象数  
  9.         overflowToDisk(true,false):缓存对象达到最大数后,将缓存写到硬盘中  
  10.         diskPersistent:硬盘持久化  
  11.         timeToIdleSeconds:缓存清除时间   
  12.         timeToLiveSeconds:缓存存活时间  
  13.         memoryStoreEvictionPolicy:缓存清空策略  
  14.         1.FIFO:first in first out 先讲先出  
  15.         2.LFU: Less Frequently Used 一直以来最少被使用的  
  16.         3.LRU:Least Recently Used  最近最少使用的  
  17.     -->  
  18.     <defaultCache maxElementsInMemory="1000" eternal="false"  
  19.         timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" />  
  20.     <cache name="userCache" eternal="false" maxElementsInMemory="1000"  
  21.         overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="3600"  
  22.         timeToLiveSeconds="3600" memoryStoreEvictionPolicy="LFU" />  
  23. </ehcache>  

HibernateTest.java

load是not found

[java] view plain copy

 

/**
 *
 */
package com.b510.examples;

//from 后接类名

 

  1. Hibernate: select user0_.id as id1_0_, user0_.age as age2_0_, user0_.name as name3_0_ from User user0_  
  2. zhangsan  
  3. zhangsan  
  4. lisi  
  5. wangwu  
  6. zhangsan  
  7. zhangsan  
  8. lisi  
  9. wangwu  

import org.hibernate.Session;

session.close();

 

junit:junit-4.10.jar和mysql-connector-java-5.1.15-bin.jar

HIbernateTest.java

如果你使用load方法,hibernate认为该id对应的对象(数据库记录)在数据库中是一定存在的,所以它可以放心的使用,它可以放心的使用代理来延迟加载该对象。在用到对象中的其他属性数据时才查询数据库,但是万一数据库中不存在该记录,那没办法,只能抛异常ObjectNotFoundException,所说的load方法抛异常是指在使用该对象的数据时,数据库中不存在该数据时抛异常,而不是在创建这个对象时。由于session中的缓存对于hibernate来说是个相当廉价的资源,所以在load时会先查一下session缓存看看该id对应的对象是否存在,不存在则创建代理。所以如果你知道该id在数据库中一定有对应记录存在就可以使用load方法来实现延迟加载。

五:最后我们就可以来进行我们的业务开发了(主要进行user的增删改查操作):

  1. Hibernate: select user0_.id as id1_0_0_, user0_.age as age2_0_0_, user0_.name as name3_0_0_ from User user0_ where user0_.id=?  
  2. zhangsan  
  3. zhangsan  

/**
 *
 */
package com.b510.examples;

session.close();

Main.java

Java代码 

  System.out.println("id:"+category.getId()+"  ,name:"+category.getName()+", description:"+category.getDescription());
输出的是id,name和description属性值,其他的我们不管,所以Hibernate用了lazy loading(延迟加载),带来的好处就是我们不关心的

hql的update(不用)

 

  1. package com.test.pojo;  
  2.   
  3. import javax.persistence.Entity;  
  4. import javax.persistence.GeneratedValue;  
  5. import javax.persistence.GenerationType;  
  6. import javax.persistence.Id;  
  7.   
  8. import org.hibernate.annotations.Cache;  
  9. import org.hibernate.annotations.CacheConcurrencyStrategy;  
  10.   
  11. @Entity  
  12. @Cache(usage=CacheConcurrencyStrategy.READ_WRITE)  
  13. public class User {  
  14.     @Id  
  15.     @GeneratedValue(strategy=GenerationType.IDENTITY)  
  16.     private int id;  
  17.     private String name;  
  18.     private int age;  
  19.     public int getId() {  
  20.         return id;  
  21.     }  
  22.     public void setId(int id) {  
  23.         this.id = id;  
  24.     }  
  25.     public String getName() {  
  26.         return name;  
  27.     }  
  28.     public void setName(String name) {  
  29.         this.name = name;  
  30.     }  
  31.     public int getAge() {  
  32.         return age;  
  33.     }  
  34.     public void setAge(int age) {  
  35.         this.age = age;  
  36.     }  
  37.       
  38. }  

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Hibernate:
    select
        category0_.id as id1_0_,
        category0_.name as name1_0_,
        category0_.description as descript3_1_0_
    from
        users.category category0_
    where
        category0_.id=?
Hibernate:
    select
        products0_.category_id as category2_1_,
        products0_.id as id1_,
        products0_.id as id0_0_,
        products0_.category_id as category2_0_0_,
        products0_.name as name0_0_,
        products0_.price as price0_0_,
        products0_.descripton as descripton0_0_
    from
        users.product products0_
    where
        products0_.category_id=?
id:1  ,name:java, description:java好啊
和测试代码一的运行结果相互比较,我们会发现,这次运行结果用了两条select语句。但是我们会发现

<!-- hibernate显示sql -->(运行底下会显示语句,可以删)

 

需要的jar包:hibernate-release-4.3.4Finallibrequired下所有jar包

运行效果:

session.close();  //注:查询可以不加事务

 图片 8图片 9

 说是hibernate.cache.region.factory_class属性没有配置,估计官方文档里没有把属性改过来。。。

代码:

beginTransaction.commit();

 

  1. <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>  

Hibernate就延迟加载

(hibernate中get方法和load方法的根本区别

这段代码非常耗性能,因为它每次都需要去加载解析配置文件hibernate.cfg.xml,并且每次都需要创建session;因此我们不妨自己创建一个工具类,采用单利的方式来进行实现,并且该工具类实现实体的增删改查,代码如下:

 

/**
 *
 * @author XHW
 *
 * @date 2011-7-18
 *
 */
public class HibernateTest {
 public static void main(String[] args) {
  new HibernateTest().update();
 }
 public void update(){
  Session session=HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();
  session.beginTransaction();
  Category category=(Category)session.get(Category.class, 1);
  System.out.println("id:"+category.getId()+"  ,name:"+category.getName()+", description:"+category.getDescription());
  
  Set<Product> products=category.getProducts();
   
  session.getTransaction().commit();  
 }
 
 
}

session=HibernateUtil.getSession();

以前的采用jdbc来进行连接数据库的方式是很烦琐的,这里就充分发挥了hibernate的方便与优势了:

  1. <?xml version='1.0' encoding='utf-8'?>  
  2. <!DOCTYPE hibernate-configuration PUBLIC  
  3.         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  4.         ";  
  5. <hibernate-configuration>  
  6.     <session-factory>  
  7.         <!-- Database connection settings -->  
  8.         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
  9.         <property name="connection.url">jdbc:mysql://127.0.0.1:3306/hibernate4</property>  
  10.         <property name="connection.username">root</property>  
  11.         <property name="connection.password">root</property>  
  12.         <!-- JDBC connection pool (use the built-in) -->  
  13.         <property name="connection.pool_size">1</property>  
  14.         <!-- SQL dialect -->  
  15.         <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>  
  16.         <!-- Enable Hibernate's automatic session context management -->  
  17.         <property name="current_session_context_class">thread</property>  
  18.         <!-- Disable the second-level cache -->  
  19.         <!--<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> 
  20.         -->  
  21.         <!-- 配置二级缓存 -->  
  22.         <property name="hibernate.cache.use_second_level_cache">true</property>  
  23.         <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>  
  24.         <!-- hibernate3的二级缓存配置 -->  
  25.         <!-- <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property> -->  
  26.         <!-- 开启查询缓存 -->  
  27.         <property name="hibernate.cache.use_query_cache">true</property>  
  28.           
  29.         <!-- Echo all executed SQL to stdout -->  
  30.         <property name="show_sql">true</property>  
  31.         <!-- Drop and re-create the database schema on startup -->  
  32.         <property name="hbm2ddl.auto">update</property>  
  33.         <mapping class="com.test.pojo.User" />  
  34.     </session-factory>  
  35. </hibernate-configuration>  

HibernateTest.java

session.close();

  1. <span style="font-size:14px;">  public int getId() {  
  2.         return id;  
  3.     }  
  4.     public void setId(int id) {  
  5.         this.id = id;  
  6.     }  
  7.     public String getName() {  
  8.         return name;  
  9.     }  
  10.     public void setName(String name) {  
  11.         this.name = name;  
  12.     }  
  13.     public Date getBirthday() {  
  14.         return birthday;  
  15.     }  
  16.     public void setBirthday(Date birthday) {  
  17.         this.birthday = birthday;  
  18.     }  
  19. }</span><span style="font-size: 24px;">  
  20. </span>  
  1. org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.spi.CacheImplementor]  
  2.     at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:186)  
  3.     at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:150)  
  4.     at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)  
  5.     at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:264)  
  6.     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1790)  
  7.     at com.test.pojo.UserTest.beforeClass(UserTest.java:28)  
  8.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  9.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
  10.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
  11.     at java.lang.reflect.Method.invoke(Method.java:597)  
  12.     at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)  
  13.     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)  
  14.     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)  
  15.     at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)  
  16.     at org.junit.runners.ParentRunner.run(ParentRunner.java:300)  
  17.     at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)  
  18.     at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)  
  19.     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)  
  20.     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)  
  21.     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)  
  22.     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)  
  23. Caused by: org.hibernate.cache.NoCacheRegionFactoryAvailableException: Second-level cache is used in the application, but property hibernate.cache.region.factory_class is not given, please either disable second level cache or set correct region factory class name to property hibernate.cache.region.factory_class (and make sure the second level cache provider, hibernate-infinispan, for example, is available in the classpath).  
  24.     at org.hibernate.cache.internal.NoCachingRegionFactory.buildTimestampsRegion(NoCachingRegionFactory.java:87)  
  25.     at org.hibernate.cache.spi.UpdateTimestampsCache.<init>(UpdateTimestampsCache.java:62)  
  26.     at org.hibernate.internal.CacheImpl.<init>(CacheImpl.java:72)  
  27.     at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:40)  
  28.     at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:35)  
  29.     at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:91)  
  30.     at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176)  
  31.     ... 20 more  

第二条select语句,对于我们的需求是没有必要的,他只有一个用处就是占用我们的程序执行时间。当然,

<?xml version='1.0' encoding='UTF-8'?>

 

 

这是我们不希望看到的结果。

return list;

好了,一个添加功能就已经实现,但是写到这里,我们可能发现我们每进行一次操作,比如添加,修改,删除,查找都需要执行这段代码:

本文由必威发布于必威-编程,转载请注明出处:但是我们只要的是,ehcache下所有包

相关阅读