我正在开发jsf应用程序,并使用hibernate模式作为后端。我想创建会话工厂,并在整个应用程序中关闭它。我正在使用util类创建Session工厂。
import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class HibernateUtil
{
private static SessionFactory sessionFactory;
private static ServiceRegistry serviceRegistry;
static
{
try
{
Configuration configuration = new Configuration().configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
}
catch (HibernateException he)
{
System.err.println("Error creating Session: " + he);
throw new ExceptionInInitializerError(he);
}
}
public static SessionFactory getSessionFactory()
{
return sessionFactory;
}
}
public static void closeFactory() {
if (sessionFactory != null) {
try {
sessionFactory.close();
} catch (HibernateException ignored) {
log.error("Couldn't close SessionFactory", ignored);
}
}
}
在我的DAO类的每种方法中,我都会打开会话工厂并关闭它。因此,在我只能打开/关闭会话工厂一次的应用程序中。提前致谢。
在我的应用程序中在哪里打开和在哪里关闭SessionFactory
您正在使用单例会话工厂对象。因此,您可以使用类名称调用getSessionFactory()方法。因此您确实需要每次为会话工厂创建对象。
您的DAO类方法应如下所示
DAO类中的方法
public boolean createUser(NewUserDTO newUserDTO) {
try {
sessionFactory = DBUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
session.save(newUserDTO);
session.getTransaction().commit();
} catch (RuntimeException runtimeException) {
LOGGER.error(runtimeException);
transaction.rollback();
return false;
} finally {
if (session != null) {
session.close();
}
}
return true;
}
并且必须为每种方法关闭会话。这样就不会为每个类都创建会话工厂。
问题内容: 我需要在android中使用mapview控件,但似乎无法理解如何运行。是否安装了eclipse?我似乎找不到下载链接。 谢谢 问题答案: 是标准Java发行版的一部分。 在Windows 64位计算机上,通常会在以下位置找到jdk 它用于管理您可以使用jar文件签名的密钥和证书。 如果您提供所需做的更多详细信息,我们可能会给您更具体的答案。
问题内容: 考虑以下代码: 上面没有编译,因为都和抛出。那么,我是否要在finally子句中添加try / catch块?还是将close语句移到try子句中?还是只是不打扰靠近? 问题答案: 对于文件I / O,通常将try / catch添加到finally块。但是,您必须注意不要从finally块中抛出任何异常,因为它们会导致原始异常(如果有)丢失。 有关关闭数据库连接的更具体的示例,请参见
问题内容: Swing应用程序现在真的被使用吗?我找不到使用它们的地方。可以跳过AWT和Swing包吗(尽管我学到了一些基础知识)? 问题答案: 如果您是专门为Web编写的,则可以跳过Swing,否则,您肯定会碰上它。如果没有Swing GUI,我从来没有在非平凡的Java应用程序上工作过。 另外,Swing是更好使用的API之一。如果您使用大多数其他工具,则会发现它们更加难以使用和/或与平台不兼
问题内容: 我在某处读到该函数将空字符串视为,因此这不是从HTML表单验证文本输入和文本框的有效方法。 因此,您可以用来检查用户是否键入了某些内容。 函数将空字符串视为是真的吗? 那我应该在什么情况下使用呢?我应该经常检查是否有东西吗? 例如代替 使用这个 问题答案: isset vs.!empty 自由贸易协定: “ isset()检查变量的值是否包含(False,0或空字符串),但不包含NUL
问题内容: 所以最近我一直在研究Clojure,我喜欢这种语言。我想看看是否可以在其中制作一个小型Web应用程序,以挑战自己。但是,我绝对没有建立任何与Java相关的Web应用程序的经验。实际上,我实际上对Java没有太多的经验。我从哪说起呢?我在Apache和LAMP堆栈方面拥有丰富的经验,并且我知道在Apache上大多数情况下我只会使用Fast- CGI,但我不知道Java世界中的等效功能(如
问题内容: 我正在使用SphinxSearch查询某些内容,并具有要使用MySQL查询的对象的ID。我的ID数组根据Sphinx给出的排名进行排序。因此,我想制作一个像这样的MySQL: 我知道我可以做: 但是我无法获得订单。 我如何与Laravel以适当的方式做到这一点? 问题答案: 使用http://laravelsnippets.com/snippets/get-all-items-at-o