小编jul*_*dev的帖子

Redis作为Hibernate二级缓存

我有一个疯狂的想法:使用Redis作为休眠的第二个缓存级别.Redis是一个内存数据存储区,它支持复制,管道等.目标是在许多tomcat节点之间共享hibernate缓存.基本实现应该是将Hibernate缓存对象键和值进行搜索并将所有内容存储到Redis数据库中.你怎么看待这个想法?

最好的祝福,

朱利叶斯

caching hibernate nosql redis

23
推荐指数
3
解决办法
2万
查看次数

Spring/Hibernate异常:没有活动事务,createCriteria无效

我在spring-hibernate-transaction问题上花了几天时间.我使用jaxws + spring + hibernate创建一个简单的web服务,它工作正常但是当我调用使用事务bean spring的web方法时抛出以下错误:

21 sept. 2011 14:29:29 com.sun.xml.ws.server.sei.EndpointMethodHandler invoke
GRAVE: org.hibernate.HibernateException: createCriteria is not valid without active transaction
Run Code Online (Sandbox Code Playgroud)

我似乎交易已经开始......但是发生了一些错误.

[jmedia] 21 sept. 2011 14:29:29 [http-8080-1] DEBUG org.springframework.orm.hibernate3.HibernateTransactionManager  - Creating new transaction with name [com.cellfish.mediadb.ws.encoder.MediaDBFeeds.testTransaction]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly; ''
[jmedia] 21 sept. 2011 14:29:29 [http-8080-1] DEBUG org.springframework.orm.hibernate3.HibernateTransactionManager  - Opened new Session [org.hibernate.impl.SessionImpl@26b20a31] for Hibernate transaction
[jmedia] 21 sept. 2011 14:29:29 [http-8080-1] DEBUG org.springframework.orm.hibernate3.HibernateTransactionManager  - Preparing JDBC Connection of Hibernate Session [org.hibernate.impl.SessionImpl@26b20a31]
[jmedia] 21 sept. 2011 14:29:29 [http-8080-1] DEBUG org.springframework.orm.hibernate3.HibernateTransactionManager  - …
Run Code Online (Sandbox Code Playgroud)

spring tomcat hibernate transactions jax-ws

9
推荐指数
1
解决办法
1万
查看次数

Hibernate SqlFragment内存泄漏?

我在Tomcat服务器上部署了一个简单的webapp.webapp是一个REST Web服务,每个Web资源从MySQL数据库加载数据并返回XML或JSON文档.我使用以下框架堆栈:Jersey(1.14)+ Spring(3.1)+ Hibernate(4.1)+ EHCache(2.5.1).

我用jMeter测试了webapp:我启动了5个线程来请求Web资源.几分钟后,堆已经开始缓慢填充达到99%并最终返回OOM异常.我不知道它是否是内存泄漏但是当我org.hibernate.hql.internal.ast.tree.SqlFragment在内存堆中看到大量对象时?!!

/usr/java/jdk/bin/jmap -histo:live 17047 > /tmp/histo.txt

 num     #instances         #bytes  class name
----------------------------------------------
   1:        720143       69133728  org.hibernate.hql.internal.ast.tree.SqlFragment
   2:        510537       63559320  [C
   3:        360221       34581216  org.hibernate.hql.internal.ast.tree.BinaryLogicOperatorNode
   4:        704652       33823296  java.util.HashMap$Entry
   5:        360223       31699624  org.hibernate.hql.internal.ast.tree.SqlNode
   6:        697354       27894160  java.lang.String
   7:        370975       26710200  org.hibernate.hql.internal.ast.tree.Node
   8:        171241       25623320  <constMethodKlass>
   9:        208125       24948176  [Ljava.lang.Object;
  10:        171241       20568632  <methodKlass>
  11:         16012       17827384  <constantPoolKlass>
  12:        383070       16623136  [I
  13:         34829       15170176  [Ljava.util.HashMap$Entry;
  14:        226869       12885896  <symbolKlass>
  15:         16012       12590168  <instanceKlassKlass>
Run Code Online (Sandbox Code Playgroud)

这里是我的jvm选项: …

java spring garbage-collection hibernate

5
推荐指数
1
解决办法
1204
查看次数

如何在大表上优化计数SQL查询

我在mysql(innodb)上有一张大桌子,其中包含产品资产(1300万行)。这是我的数据库的一些架构:

product <-many2one-- file_item --one2many--> family --many2one--> download_type
Run Code Online (Sandbox Code Playgroud)

* file_item *表是具有数百万行的大表。我尝试使用以下sql查询按下载类型对产品进行计数:

select t.name as type, 
count(p.product_id) as n 
from file_item p 
inner join family f on f.id = p.family_id 
inner join type t on f.id_type = t.id 
group by t.id order by t.name;
Run Code Online (Sandbox Code Playgroud)

* file_item *表上有3个索引:

  • product_family_idx(product_id,family_id)
  • family_idx(family_id)
  • product_idx(product_id)说明输出:
+ ---- + ------------- + ------- + -------- + ------------- ---------------------- + --------- + --------- + ------- ------------ + ---------- + -------------------------- ------- +
| id | select_type | 桌子| 类型 …

mysql sql query-optimization

3
推荐指数
1
解决办法
6156
查看次数