公司项目采用hibernate和jdbc共存的数据存取方式。
测试时,发现Jdbc写了Logger表之后,Hibernat再去读取时,就报错,can't execute update。
网上搜索说是Hibernate的缓存机制,与数据库不同步的时候,就报错了。
采用去缓存,flush等方法,发现还是报错,于是乎,想到干脆使用hibernate的jdbc去存取算了。
于是将DAO方法修改如下:
public Logger saveLogger(Logger logger) {
// TODO Auto-generated method stub
//DAOFactory.getFactory().getDAO().getObjects("from Logger", null);
//get session
Session session = HibernateSessionFactory.getSessionFactory().openSession();
try {
String sql = "insert into logger(user,object,objectid,action,description) values('"+logger.getUser()+"','"+logger.getObject()+"','"+logger.getObjectid()+"','"+logger.getAction()+"','"+logger.getDescription()+"')";
session.connection().prepareStatement(sql).execute();
session.connection().commit();
session.close();
} catch (Exception e) {
throw new HibernateException(e);
} finally {
HibernateSessionFactory.closeSession();
}
return logger;
}
注意其中的
session.connection().commit();
开始的时候没有加入这个语句,数据总是保存不了。
分享到:
相关推荐
本话题将详细探讨两种常见的Java技术:Hibernate和JDBC,用于实现这一目标。 **JDBC(Java Database Connectivity)** 是Java平台上的标准API,它允许Java应用程序连接到各种类型的数据库。JDBC提供了连接数据库、...
在实际项目中,"UserDaoImpl.java"可能是用户数据访问层的实现类,它可能包含使用Hibernate或JDBC进行双表查询的方法。例如,该类可能会有如下方法: ```java public List<User> getUsersWithOrders() { // ...
在实际项目中,Spring还允许开发者结合使用Hibernate和JDBC。例如,在大数据量的简单查询场景下,可以选择性能较高的JDBC;而在复杂的对象关系映射或者更新操作时,可以利用Hibernate的ORM优势。Spring的这种灵活性...
标题中的“本人理解hibernate 与 JDBC 的最本质...选择使用哪种方式取决于项目需求和团队技术栈。在实际开发中,两者常结合使用,以发挥各自优势。对于初学者,理解这两种技术的区别有助于做出更适合项目的技术决策。
- **灵活性限制**:相比直接使用JDBC,Hibernate在某些场景下可能缺乏足够的灵活性,特别是对于需要高度定制化的查询。 - **资源消耗**:Hibernate需要额外的内存来存储Session对象,对于大规模部署的应用程序来说,...
标题和描述中提到的关键信息是“hibernate3”、“依赖包”和“JDBC”。这表明我们将讨论关于Hibernate ORM框架的第三版,它所需的依赖库,以及与Java数据库连接(JDBC)的关系。Hibernate是一个流行的Java持久化框架...
在标题和描述中提到的"kingbaseV8 hibernate jdbc驱动",意味着我们需要关注如何在Hibernate框架中使用KingbaseV8的JDBC驱动进行数据操作。 JDBC(Java Database Connectivity)是Java中用于连接数据库的标准接口,...
对于性能测试,可以比较使用JDBC和Hibernate执行相同任务的时间消耗,评估哪种方式更高效。同时,要关注内存使用情况,因为ORM框架可能会增加内存开销。 在进行测试时,使用单元测试框架,如JUnit,可以帮助自动化...
虽然这不完全等同于Hibernate的全部功能,但确实降低了使用JDBC的复杂度,提高了开发效率。 在压缩包中的"jdbc"文件可能是封装后的JDBC工具类库,包含了实现上述功能的Java源代码或已编译的类文件。你可以通过阅读...
JDBC(Java Database Connectivity)和Hibernate是两种常见的与Oracle交互的方式。本文将深入探讨如何使用JDBC和Hibernate来操作Oracle数据库,同时结合提供的标签"源码"和"工具",我们将讨论它们的实现细节和优势。...
然而,尽管JDBC提供了通用的数据库访问方式,但直接使用JDBC编写代码可能会导致大量重复和冗余的数据库操作代码,这使得维护和扩展变得困难。 **Hibernate** 是一个优秀的开源对象关系映射(ORM)框架,它简化了...
Hibernate使用HQL(Hibernate Query Language)或Criteria API,使得开发者可以以更面向对象的方式编写查询。这提高了代码的可读性和可维护性,降低了学习成本。同时,Hibernate自动管理对象的状态和持久化,确保...
两个项目,一个项目是基于spring jdbc实现的分布式事务,一个是基于spring hibernate的分布式事务,hibernate项目里的applicationContext2.xml是基于mysql和mssql, applicationContext3.xml基于两个mssql, ...
Hibernate是一个强大的对象关系映射(ORM)框架,它允许开发者用面向对象的方式来操作数据库,极大地简化了数据库操作。JDBC(Java Database Connectivity)则是Java中用于连接数据库的标准接口,虽然直接使用JDBC...
Hibernate与JDBC对于数据库的性能操作对比事例,配置,更多信息资源
在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库,而无需直接编写SQL语句。`hibernate.jdbc.batch_size`是Hibernate配置中的一个重要参数,用于控制...
标题提到的是“搭建hibernate所使用的jar包,内含mysql的jdbc的jar包”,这表明这个压缩包包含了用于构建Hibernate框架的库文件,并且这些库中还包括了连接MySQL数据库的Java Database Connectivity (JDBC)驱动。...
通过Hibernate,开发者可以使用面向对象的方式来操作数据,而无需编写大量的SQL语句。Hibernate的核心功能包括持久化对象、查询语言(HQL)和 Criteria 查询等。它提供了一种透明的数据访问层,使得业务逻辑与数据...
在使用Hibernate进行数据查询时,Fetch Size的设置对性能有着显著的影响。Fetch Size是指每次从数据库中取出的数据行数,默认情况下,Oracle数据库的JDBC驱动程序中的Fetch Size被设置为15。然而,将Fetch Size增加...