package springWebwork2;
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
import org.apache.commons.logging.*;
import java.util.*;
import manager.*;
public class HibernateUtil {
private static Log log = LogFactory.getLog(HibernateUtil.class);
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
log.error("创建SessionFactory失败:", ex);
throw new ExceptionInInitializerError(ex);
}
}
//使用ThreadLocal实现线程安全
public static final ThreadLocal LocalSession = new ThreadLocal();
public static Session currentSession() throws HibernateException {
Session s = (Session) LocalSession.get();
// Open a new Session, if this Thread has none yet
if (s == null) {
s = sessionFactory.openSession();
LocalSession.set(s);
}
return s;
}
public static void closeSession() throws HibernateException {
Session s = (Session) LocalSession.get();
LocalSession.set(null);
if (s != null)
s.close();
}
//测试代码
public static void main(String[] args) throws Exception {
Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
//创建数据对象并插入表
Manager B = new Manager();
//B.setBlockname("新区");
//B.setShoworder(0);
//相当于insert
//session.save(B);
//用list方法查询数据
Query q = session.createQuery("from manager"); //用对象类名,而非表名
List l = q.list();//返回一个List接口,用来遍历结果集
for (int i = 0; i < l.size(); i++) {
B = (Manager) l.get(i);
System.out.println(B.toString());
}
//更新数据
//Query qq = session.createQuery("from SimpleUser");
//B = (Block) session.load(Block.class, new Integer(1));
//B.setBlockname("其它");
//tx.commit();
//关闭
HibernateUtil.closeSession();
}
}
执行到
sessionFactory = new Configuration().configure().buildSessionFactory();
时出现异常!我用的是eclipse M1.7 + hibernate2 + postgreSql
我刚刚学习Hibernate ,请给点帮助谢谢!
分享到:
相关推荐
例如,`FactoryTest`方法中,通过`Assert.IsNotNull(sf, "get sessionfactory fail")`来验证ISessionFactory是否成功创建,如果失败,测试将抛出异常,提示获取SessionFactory失败。 Nhibernate通过O/R Mapping简化...
在实际开发过程中,可以利用MyEclipse的测试运行器来执行这些单元测试,查看测试结果,包括成功的测试用例、失败的测试用例以及任何未通过的断言。这样有助于尽早发现和修复代码中的错误,提高软件质量,并且在项目...
事务是数据库操作中的一个重要概念,它确保一系列操作要么全部成功,要么全部失败,从而保持数据的一致性。在Spring框架中,事务管理通常是通过`PlatformTransactionManager` 接口来实现的。配置事务时需要指定事务...
2. **Spring配置**:创建Spring的配置文件,如applicationContext.xml,配置数据源、Hibernate SessionFactory以及你的业务层Bean。你可以使用`<bean>`标签定义Bean,使用`<property>`标签设置Bean的属性。 3. **...
综上所述,`hibernateOperate.java`, `DeleteTest.java`, `HibernateSessionFactory.java`以及`BatchUpdateTest.java`这四个文件涵盖了Hibernate中的核心操作和测试场景,它们一起构成了一个完整的数据库操作示例,...
1. 引入Spring核心、AOP、测试等相关依赖。 2. 配置Hibernate的SessionFactory,DataSource以及事务管理器。 3. 在Service层或DAO层的方法上添加`@Transactional`注解。 4. 配置事务代理,如`<tx:annotation-driven>...
- 类加载问题:可能出现类加载顺序错误,导致依赖注入失败,需合理配置类加载器。 - 拦截器顺序:Struts2的拦截器执行顺序可能影响功能,需要根据业务需求调整。 总之,SSH框架的整合涉及多个层次的配置和组件协调...
8. **测试**:为了确保登录功能的正确性,需要编写单元测试和集成测试,测试用户输入的合法性、数据库查询的正确性以及异常处理的有效性。 这个项目展示了如何将三个框架有效集成,实现一个常见的业务需求。理解...
- Transaction配置则是确保数据的一致性和完整性,即当多个操作需要作为一个整体执行时,如果其中一个操作失败,则所有操作都会被回滚,以保持数据的完整性和一致性。 - **示例**:通过配置Hibernate ...
8. 测试:运行项目,进行单元测试和集成测试,确保各个组件正常工作。 这种整合方式的优点在于,Struts2提供了良好的MVC结构,Spring负责管理和控制依赖,而Hibernate则简化了数据库操作。通过它们的协同工作,...
然而,整合过程中需要注意版本兼容性,避免因不同版本间的不兼容问题导致整合失败。 在实际开发中,SSH整合的jar包通常包含这三个框架的核心库、相应的插件以及可能的依赖库。文件名“整合”可能是指包含了这些jar...
7. **测试验证**:编写JUnit测试用例,确保各组件正常工作,然后部署应用到服务器,进行功能和性能测试。 集成Spring、SpringMVC和Mybatis能帮助开发者构建高效、灵活的后端系统。通过它们的协同工作,可以轻松地...
8. 测试:运行应用,测试登录功能,确保输入正确的用户名和密码可以成功登录,错误信息则提示登录失败。 以上就是使用SSH2框架实现简单登录功能的概述。理解这些知识点,有助于开发者快速构建出功能完善的JavaEE...
6. **测试整合**: 编写JUnit测试用例,验证Action、Service、DAO三层是否能正常工作。 **常见问题及解决方案**: 1. **空指针异常**: 可能是由于Spring没有正确注入bean,检查配置文件中的bean声明和引用。 2. **...
Spring的IoC(控制反转)和DI(依赖注入)特性,使得组件之间的耦合度降低,提高了代码的可测试性和可维护性。 **3. Hibernate** Hibernate是一个持久层框架,它简化了Java对象与数据库之间的交互。通过ORM(对象...
6. **测试与调试**:完成以上配置后,进行单元测试和集成测试,确保登录功能正常运行,包括用户名和密码的验证、登录失败的处理等。 在项目源码中,可能包含以下文件: - `struts-config.xml`:Struts1的配置文件。...
- 错误和异常处理,如表单验证失败后的错误信息显示,数据库操作时可能出现的异常处理。 5. **优化和注意事项**: - 缓存管理:Hibernate提供了第一级缓存(Session级别的)和第二级缓存(SessionFactory级别的)...
// 登录失败 } transaction.commit(); session.close(); ``` 6. **事务管理** 数据库操作通常需要在事务中进行,以确保数据的一致性。在上面的示例中,我们启用了事务并在操作完成后提交。 7. **缓存策略** ...
在Hibernate中,我们通常使用Transaction来包裹一组操作,确保它们要么全部成功,要么全部失败。例如,`session.beginTransaction()`开始一个事务,`transaction.commit()`提交事务,而如果发生错误,可以调用`...
例如,当数据库操作失败时,可以抛出自定义异常,并在ActionSupport中重写`validate()`或`execute()`方法进行处理,或者通过AOP切面捕获并处理异常。 7. **视图层**:在Struts2中,视图通常由JSP或FreeMarker等模板...