2017-09-18 8 views
-1

私はhibernateで新しくなっていますが、私のコードはうまくいきますが、Controller classの呼び出しごとに、スリープ状態になるmysqlにある。私のコードは -
新しい設定()。configure()。各呼び出しで新しい接続を作成しています

hibernate.cfg.xmlファイル:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 

<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hib_db_netbean</property> 
     <property name="hibernate.connection.username">root</property> 
     <property name="hibernate.connection.password">system</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.MariaDBDialect</property> 
     <property name="show_sql">true</property> 
     <property name="format_sql">true</property> 
     <property name="hbm2ddl.auto">update</property> 
     <property name="hibernate.c3p0.min_size">2</property> 
     <property name="hibernate.c3p0.max_size">20</property> 
     <property name="hibernate.c3p0.timeout">300</property> 
     <property name="hibernate.c3p0.max_statements">50</property> 
     <property name="hibernate.c3p0.idle_test_period">3000</property> 

     <mapping class="com.hib.collection.UserDetails"/> 

    </session-factory> 
</hibernate-configuration> 

私のエンティティクラス(UserDetails.java):

package com.hib.collection; 

import java.util.ArrayList; 
import java.util.Collection; 
import javax.persistence.Column; 
import javax.persistence.ElementCollection; 
import javax.persistence.Entity; 
import javax.persistence.FetchType; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.JoinTable; 
import javax.persistence.Table; 

@Entity 
@Table(name = "USER_TABLE") 
public class UserDetails { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private int user_id; 

    @Column(name = "user_name") 
    private String username; 

    public int getUser_id() { 
     return user_id; 
    } 

    public void setUser_id(int user_id) { 
     this.user_id = user_id; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

} 

Controllerクラス - CallHibernate.java

package com.hib.collection; 

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.swing.JOptionPane; 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 

@WebServlet(name = "CallHibernate", urlPatterns = {"/CallHibernate"}) 
public class CallHibernate extends HttpServlet { 


    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 

     UserDetails user = new UserDetails(); 

     SessionFactory sessionFactory; 
     Session session = null; 

     user.setUsername("User Name"); 

     try (PrintWriter out = response.getWriter()) { 

      sessionFactory = new Configuration().configure().buildSessionFactory(); 
      session = sessionFactory.openSession(); 
      session.beginTransaction(); 

      // Insert The Data In the Table 
      session.save(user); 
      session.getTransaction().commit(); 

      session.close(); 


     } 
     catch (Exception e) { 
      JOptionPane.showMessageDialog(null, e); 
     } finally { 
      session.close(); 
     } 
    } 


    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 


    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    } 

のMySQL Workbenchの接続ステータス:

enter image description here

+0

そして、あなたの質問です...:

はリンクの下でのシングルトンデザインパターンに従ってください? – Kayaman

+0

どのようにしてこの問題を解決できるので、各呼び出しでMy codeが新しい接続スレッドを作成するべきではありません。 – ansh

+0

ただし、接続プールを使用しています。それは接続を開いたままにします、それはその仕事です。 – Kayaman

答えて

関連する問題