在Tomcat的上下文之外使用Hibernate

时间:2010-03-30 01:32:25

标签: java hibernate web-applications tomcat orm

任何人都使用Hibernate访问纯Java应用程序(不是Web应用程序)中的数据库?您的体验是什么样的,设置并开始需要很长时间?

5 个答案:

答案 0 :(得分:2)

我发现即使使用纯SQL(无映射)它也非常有用,因为它比直接JDBC更好地处理查询参数和类型转换。

这是一个简单的自包含Hibernate类,它假定一个名为Person的表具有id和anme。只需定义hibernate.cfg.xml来设置连接url,驱动程序等;在类路径上设置Hibernate jar;并运行它。

诀窍肯定是在你的类路径中获得所有正确的jar。如果您下载Hibernate发行版,从3.3开始,lib文件夹中有一个自述文件,它解释了每个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 :(得分:1)

Hibernate可以在任何Java应用程序中使用相同的设置时间。重要的是在类路径中获取jar而不是web app类加载器。如果罐子可用,则API的其余部分不依赖于应用程序的类型。

答案 2 :(得分:0)

完成了几次

如果它是一个独立的服务器端应用程序 - 我建议使用Spring_hibernate。

要回答您的具体问题 - 这非常简单直接。没有比采用网络应用程序更长的时间

答案 3 :(得分:0)

配置部分没有那么不同。只需使用Hibernate内置连接池即可。但是,会话管理可能与视图模式中的打开会话非常不同。但如果没有关于您的应用程序的更多细节,很难更精确。

答案 4 :(得分:0)

我在一些Swing应用程序中使用了hibernate。

它与它在webapp中的使用非常相似,除了你没有可能使用过滤器来关闭Session,你需要注意你在两个事务之间使用持久对象做什么。

我发现在持久对象上保留引用更容易,并尝试在生成它的事务之后使用它。在webapp中,事务通常在请求结束时结束。