Java 在Tomcat上下文之外使用Hibernate
有人使用Hibernate在纯java应用程序(不是web应用程序)中访问DB吗?您的体验是什么样的?设置和开始运行是否花费了很长时间?在任何java应用程序中,Hibernate都可以使用同等的设置时间。重要的是在类路径中获取jar,而不是web应用程序类加载器。如果JAR正确可用,则API的其余部分并不取决于应用程序的类型。多次这样做 如果它是一个独立的服务器端应用程序,我建议使用Spring\u hibernateJava 在Tomcat上下文之外使用Hibernate,java,hibernate,web-applications,tomcat,orm,Java,Hibernate,Web Applications,Tomcat,Orm,有人使用Hibernate在纯java应用程序(不是web应用程序)中访问DB吗?您的体验是什么样的?设置和开始运行是否花费了很长时间?在任何java应用程序中,Hibernate都可以使用同等的设置时间。重要的是在类路径中获取jar,而不是web应用程序类加载器。如果JAR正确可用,则API的其余部分并不取决于应用程序的类型。多次这样做 如果它是一个独立的服务器端应用程序,我建议使用Spring\u hibernate 回答你的具体问题——非常简单和直截了当。我发现即使在使用纯SQL(无映射)
回答你的具体问题——非常简单和直截了当。我发现即使在使用纯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());
}
配置部分没有那么大的不同。只要使用Hibernate内置的连接池就可以了。但是,会话管理可能与视图中的开放会话模式非常不同。但是如果没有关于你的应用程序的更多细节,就很难做到更精确 我在一些Swing应用程序中使用了hibernate 它与webapp中的用法非常相似,只是您不可能使用过滤器来关闭会话,并且您需要小心处理两个事务之间的持久对象
我发现在持久对象上保留一个引用更容易,并在生成它的事务之后尝试使用它。在webapp中,事务通常在请求结束时结束。为什么会有什么不同?或者说DB连接池本身(可以是容器管理的)?实际上我更喜欢使用Spring+Hibernate。