2015-06-18 2 views
1

В моем приложении я столкнулся с проблемой выполнения. Особенно при сохранении и извлечении из базы данных. Мое приложение является автономным приложением. Не веб-приложение. Я использую hibernate для связи с базой данных. Это приложение не поступило в производство. В этом приложении одновременно будет использовано 50 человек.написать хороший код для спящего режима

Вот приведенный ниже код, который я использовал для получения сеанса. Я подозреваю, что ниже приведен код для получения медлительности.

public class HibernateUtil { 

    public Session getSession() { 

     SessionFactory buildSessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); 
     Session session = buildSessionFactory.openSession(); 
     return session; 
    } 

    public Transaction getTransaction() { 
     return getSession().getTransaction(); 
    } 

} 

Я не уверен, как написать хороший код для открытия сессии. Может кто-нибудь предложить, как реорганизовать этот код на хороший код?

ответ

2

Также, закрытие сессии, означает, что когда поток завершил процесс, мы закрываем сеанс.

Нет ответа на один вопрос для вашего вопроса, если код не соблюдается, существует множество атрибутов, от которых зависит производительность системы.

1.) GC - Когда и какой алгоритм используется.

2.) Сколько session are getting opened, есть ли какие-либо сеансы, которые остаются без дела. Следует избегать длительных сеансов.

3.) Вводя Caching mechanism в коде, Hibernate кэш 2-го уровня, кэширование запросов

4.) Как big the objects становятся извлеченное из базы данных.

5.) Как many queries попадают в БД.

Пожалуйста, обратитесь this, this

2

Я сталкивался с подобным типом вопроса в прошлом, основной виновник это ваш создается экземпляр фабрики каждый раз, когда вы пытаетесь получить сделку.

Пожалуйста, используйте одноплодный шаблон для создания SessionFactory объекта, значит просто создать сеанс завод один раз и получить весь экземпляр сеанса от этого фабричного объекта, я уверен, вы не столкнетесь с проблемой производительности после этого изменения

изменить что-то вроде ценам ниже

static SessionFactory buildSessionFactory; 

public static getSessionFactory() { 
    if(buildSessionFactory==null) { 
     buildSessionFactory = new   
     AnnotationConfiguration().configure().buildSessionFactory(); 
    } 
} 

public Session getSession() { 
    getSessionFactory(); 
    Session session = buildSessionFactory.openSession(); 
    return session; 
} 

public Transaction getTransaction() { 
    return getSession().getTransaction(); 
} 

Это решит вашу проблему

Смежные вопросы