Java Hibernate和对象池

Java Hibernate和对象池,java,hibernate,date,immutability,object-pooling,Java,Hibernate,Date,Immutability,Object Pooling,我有一个包含日期的类,我们叫它C,它包含一组日期。我有很多C类型的对象和成千上万的日期对象,它们通常同时引用 我希望有一个日期对象池,并返回一个已分配的对象(如果在请求的时间内存在)。这很简单,但是当使用Hibernate时,我不知道怎么做 如果我执行from ClassWithDates查询,并进行延迟回迁,Hibernates会加载ClassWithDates类的所有对象和所有子集合,但据我所知,它会为集合中的每个元素创建新的日期对象,即使对象相同 我对Hibernate中不可变类的对象池很

我有一个包含日期的类,我们叫它C,它包含一组日期。我有很多C类型的对象和成千上万的日期对象,它们通常同时引用

我希望有一个日期对象池,并返回一个已分配的对象(如果在请求的时间内存在)。这很简单,但是当使用Hibernate时,我不知道怎么做

如果我执行from ClassWithDates查询,并进行延迟回迁,Hibernates会加载ClassWithDates类的所有对象和所有子集合,但据我所知,它会为集合中的每个元素创建新的日期对象,即使对象相同

我对Hibernate中不可变类的对象池很感兴趣。 我如何实现它


上面给出的示例简化了我正在处理的代码。

我最近学习了如何使用Hibernate的用户定义类型。我想可以使用其中的一个来读取日期值或日期表示,然后使用数据库值作为键从工厂中提取不可变的日期对象。保存时,反转该过程。问题是,在读入日期时,仍然需要为日期创建一个对象,因此仍然需要大量的对象创建。但是他们可能很快就会被收集到垃圾。我希望这可以在不使用低级Hibernate架构的情况下完成,但是。。。我想你是对的,我用它把blob转换成字符串,把一些存储为整数的日期转换成日期对象。是的,我知道,不是我的主意。我完全可以想象你会从池中提取不可变的日期。下面是我如何将CLOB转换为字符串用户类型的简要说明。一旦你明白了,就不算太糟了。我想知道java.sql.Date的valueOf是否足够聪明,可以像Integer和Long valueOf方法那样缓存它创建的日期。也许那就是你的对象池。