java - Hibernate 在几个选择查询或插入查询后挂起

标签 java mysql spring hibernate

我正在使用 Hibernate Relationship 开发 spring 和 hibernate web 应用程序,它可以正常工作 3 次,并且可以毫无问题地从数据库中获取记录,但是 4 次应用程序挂起或卡住,当我重新启动 tomcat 服务器时,一切正常很好,尝试 4 次后再次挂起或卡住。当应用程序挂起或卡住时没有错误让我很困惑。当我测试另一个没有在 Hibernate 上使用关系的类运行良好时,我怀疑是关系,但我不知道 ~

这是我的 Hibernate 关系引用~

mkyong

viralpatel

这是我的书,

enter image description here

这是我的用户类,

@SuppressWarnings("serial")
@Entity
@Table(name="user")
public class User implements Serializable{

private String no_dana;
private String npp;

@Id
@Column(name="no_dana", unique=true, nullable=false, updatable=false)
public String getNo_dana() {
    return no_dana;
}
public void setNo_dana(String no_dana) {
    this.no_dana = no_dana;
}
@Column(name="npp")
public String getNpp() {
    return npp;
}
private Set<Tanya> tanya;

@OneToMany(fetch= FetchType.LAZY, cascade=CascadeType.ALL, mappedBy="user")
public Set<Tanya> getTanya() {
    return tanya;
}
public void setTanya(Set<Tanya> tanya) {
    this.tanya = tanya;
}

private Set<Jawab> jawab;

@OneToMany(fetch = FetchType.LAZY, mappedBy="user")
public Set<Jawab> getJawab() {
    return jawab;
}
public void setJawab(Set<Jawab> jawab) {
    this.jawab = jawab;
}
}

这是我的tanya课,

@SuppressWarnings("serial")
@Entity
@Table(name="tanya")
public class Tanya implements Serializable{

private int id_tanya;
private String isi;

@Id
@Column(name="id_tanya", unique=true, nullable=false)
public int getId_tanya() {
    return id_tanya;
}
public void setId_tanya(int id_tanya) {
    this.id_tanya = id_tanya;
}
@Column(name="isi")
public String getIsi() {
    return isi;
}
public void setIsi(String isi) {
    this.isi = isi;
}
private User user;

@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="no_dana")
public User getUser() {
    return user;
}
public void setUser(User user) {
    this.user = user;
}

private Set<Jawab> jawab;

@OneToMany(fetch = FetchType.LAZY, mappedBy="tanya")
public Set<Jawab> getJawab() {
    return jawab;
}
public void setJawab(Set<Jawab> jawab) {
    this.jawab = jawab;
}
}

这是我的下巴课,

@SuppressWarnings("serial")
@Entity
@Table(name="jawab")
public class Jawab implements Serializable{

private int id_jawab;
private String isi;

@Id
@Column(name="id_jawab", unique=true, nullable=false)
public int getId_jawab() {
    return id_jawab;
}
public void setId_jawab(int id_jawab) {
    this.id_jawab = id_jawab;
}
@Column(name="isi")
public String getIsi() {
    return isi;
}
public void setIsi(String isi) {
    this.isi = isi;
}

private User user;

@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="no_dana")
public User getUser() {
    return user;
}
public void setUser(User user) {
    this.user = user;
}

private Tanya tanya;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="id_tanya")
public Tanya getTanya() {
    return tanya;
}
public void setTanya(Tanya tanya) {
    this.tanya = tanya;
}
}

这是我的 dao 示例(来自 tanya 类),

@Autowired
private TanyaDaoImpl(SessionFactory sessionFactory){
    setSessionFactory(sessionFactory);
}

@SuppressWarnings("unchecked")
@Override
public Tanya get(int id_tanya)throws Exception{
    DetachedCriteria criteria = DetachedCriteria.forClass(Tanya.class).add(Restrictions.eq("id_tanya", id_tanya));
    List<Tanya> tanyaList = getHibernateTemplate().findByCriteria(criteria);
    return tanyaList.get(0);
}

@Override
public Tanya getTanya(int id_tanya)throws Exception{
    Query query = getSession().createQuery("from Tanya where id_tanya = :id_tanya");
    query.setParameter("id_tanya", id_tanya);
    return (Tanya) query.list().get(0);
}

@Override
public void save(Tanya tanya)throws Exception{
    getHibernateTemplate().save(tanya);
}

@Override
public void update(Tanya tanya)throws Exception{
    getHibernateTemplate().update(tanya);
}

@Override
public void delete(Tanya tanya)throws Exception{
    getHibernateTemplate().delete(tanya);
}

@SuppressWarnings("unchecked")
@Override
public List<Tanya> listAllTanya()throws Exception{
    DetachedCriteria criteria = DetachedCriteria.forClass(Tanya.class);
    List<Tanya> tanyaList = getHibernateTemplate().findByCriteria(criteria);
    return tanyaList;
}

这是我的 session 配置,

<context:component-scan base-package="org.ppbni.splatter" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/db_ppbni" />
    <property name="username" value="root" />
    <property name="password" value="shikamaru" />

    <!-- <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/ppbniorg_db" />
    <property name="username" value="ppbniorg_user" />
    <property name="password" value="shikamaru" /> -->

</bean>
<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration"></property>
    <property name="dataSource" ref="dataSource"></property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
            <prop key="hibernate.show_sql">true</prop>
        </props>
    </property>
    <property name="packagesToScan" value="org.ppbni.splatter.model" />
</bean>

<bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager"
    p:sessionFactory-ref="sessionFactory">
</bean>

任何帮助都会很高兴 :D ~

最佳答案

这可能是因为以前的 session 。成功的事务后使用 session.close() 方法关闭 session ,这将释放连接到数据库的实例。由于此方法,问题已得到纠正。

session.close();

https://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/Session.html#close()

关于java - Hibernate 在几个选择查询或插入查询后挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38851011/

相关文章:

Java排序与MySQL排序不一样

java - 可以在 Listener 类中使用 Adapter 吗?

mysql - 在行尾对同一个表中的 2 个计数求和

mysql - 如何从 MySQL 迁移到 Cassandra 建模

php - 使用数组创建动态 MySQL 查询 - PHP

spring - JPA、Hibernate 和 Spring 集成 : Table doesn't exist Error

java - Struts2 日期时间选择器显示格式问题

java - 安装 python-bioformats 时 python setup.py Egg_info 失败

java - 对象为空,但应用程序的行为就像不是

java - 在ExternalContext中找不到pages/index.xhtml作为资源