Использование Hibernate вне контекста Tomcat - PullRequest
2 голосов
/ 30 марта 2010

Кто-нибудь использовал Hibernate для доступа к БД в чистом Java-приложении (не веб-приложении)? Каким был ваш опыт, потребовалось ли много времени, чтобы начать и начать?

Ответы [ 5 ]

2 голосов
/ 30 марта 2010

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

Вот простой автономный класс Hibernate, который принимает таблицу с именем Person с id и anme. Просто определите hibernate.cfg.xml, чтобы установить URL-адрес подключения, драйвер и т. Д .; установите банки Hibernate на пути к классам; и запустить его.

Уловка, безусловно, заключается в том, чтобы получить все нужные баночки в вашем классе. Если вы загружаете дистрибутив Hibernate, по состоянию на 3.3 в папке lib был файл readme, в котором объяснялся каждый файл JAR и нужен ли он вам во время выполнения.

@Entity
@Table(name="PERSON")
public class SimpleHibernate {
    @Id
    private Long id;
    private String name;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public static void main(String[] args) {
        AnnotationConfiguration cfg = new AnnotationConfiguration();
        cfg.configure("/hibernate.cfg.xml");
        cfg.addAnnotatedClass(SimpleHibernate.class);
        SessionFactory sessionFactory = cfg.buildSessionFactory();
        Session session = sessionFactory.openSession();
        System.out.println(session.createQuery(
             "select count(*) from SimpleHibernate").uniqueResult());
}
1 голос
/ 30 марта 2010

Hibernate можно использовать с эквивалентным временем установки в любом Java-приложении. Важно, чтобы файлы jar находились в пути к классам вместо загрузчика классов веб-приложений. Если банки доступны правильно, остальные API не зависят от типа приложения.

0 голосов
/ 30 марта 2010

Я использовал Hibernate в нескольких приложениях Swing.

Это очень похоже на использование в веб-приложении, за исключением того, что у вас нет возможности использовать фильтр для закрытия сеанса и что вам нужно быть осторожным в том, что вы делаете с постоянным объектом между двумя транзакциями.

Я обнаружил, что легче сохранить ссылку на постоянный объект и пытаться использовать его после транзакции, которая его создала. В веб-приложении транзакция часто заканчивается в конце запроса.

0 голосов
/ 30 марта 2010

Конфигурационная часть ничем не отличается. Просто используйте встроенный пул соединений Hibernate, и все. Однако управление сеансом может сильно отличаться от открытого сеанса в виде представления. Но трудно быть более точным без более подробной информации о вашем приложении.

0 голосов
/ 30 марта 2010

Сделано пару раз

Если это отдельное приложение на стороне сервера, я бы предложил использовать Spring_hibernate.

Чтобы ответить на ваш конкретный вопрос - это было довольно просто и прямо. Не заняло больше времени, чем веб-приложение

...