gpt4 book ai didi

java - 如何使用 Hibernate 处理连接

转载 作者:行者123 更新时间:2023-11-30 08:17:13 24 4
gpt4 key购买 nike

下面是我的Hibernate.xml

    <property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.c3p0.min_size">5</prop>
<prop key="hibernate.c3p0.max_size">20</prop>
<prop key="hibernate.c3p0.timeout">100</prop>
</props>
</property>

下面是GenericDaoImpl的代码

public abstract class GenericDaoImpl <T> extends HibernateDaoSupport  implements IGenericDao<T> {

private Class< T > type;

@Autowired
public void setHibernateSessionFactory(SessionFactory sessionFactory)
{
setSessionFactory(sessionFactory);
}

@Override
public T save(T t) {
Session session = getSession();
session.saveOrUpdate(t);
return t;
}
}

下面是 DaoImpl 类的代码

       Session session = (Session) getSession();
Query executeQuery = session.createQuery("XXXXX");
customerDetails = executeQuery.list();
if(customerDetails !=null)
{
if(!customerDetails.isEmpty())
{
customerDomain = customerDetails.get(0);
}
}

我正在使用 getSession() 在 DaoImpl 类中执行查询。对于每个连接,它都会创建与数据库的新连接。我已将最大连接大小设置为 20,但已超过该限制。我正在通过 csv 更新用户的详细信息,当时它超过了最大大小限制。它显示 556 连接仅更新 86 个用户。如何使用 Hibernate 处理连接。?我错过了什么吗?或者我的代码有问题。?

最佳答案

那是因为您没有关闭 Hibernate session ,因此数据库连接永远不会被释放。

你甚至不应该使用 HibernateDaoSupport。你应该使用 HibernateTransactionManager ,它负责跨@Transactional 服务边界的事务和 session 管理。

关于java - 如何使用 Hibernate 处理连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27964520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com