- 浏览: 1992954 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (509)
- JavaEE (122)
- Oracle数据库 (29)
- JavaScript (37)
- SAP (5)
- MySql数据库 (7)
- JavaSE (4)
- Ajax (1)
- jQuery (13)
- SSH框架 (36)
- Web Service (10)
- JSF框架 (2)
- JBPM (0)
- ireport报表 (2)
- ibatis (5)
- Hibernate (31)
- JSP (11)
- Tomcat 服务器 (20)
- Other (19)
- JavaWeb (4)
- Maven (11)
- OSWorkFlow (10)
- HTML (13)
- Exception汇总 (7)
- SVN (2)
- 笑话 (1)
- JSTL (1)
- WebSphere Message Broker (13)
- ANT命令 (3)
- Liunx (12)
- Struts2 (26)
- Eclipse (6)
- DOS (3)
- Flex (11)
- WebSphere (1)
- 开发常用工具 (3)
- Junit (2)
- EJB (4)
- Struts1.2 (2)
- Jboss (1)
- Android (2)
- Java框架源码解析 (1)
- Spring (4)
- MyBatis (6)
- SpringMVC (4)
- Jetty (2)
- 数据库表设计 (1)
- SSO (4)
最新评论
-
贝塔ZQ:
也可以试试PageOffice插件,觉得更简单点
Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度 -
jia1208:
...
Could not publish server configuration for Tomcat v6.0 Server at localhost. -
u011274527:
赞
java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 错误 -
旭旭小牛啦:
怎么没哟了,继续赛
jQuery 选择器 -
wzw3919:
100行会报空指针
Java 解压缩zip文件
在Hibernate中使用日期函数获取数据库时间
为了避免在应用服务器与数据库服务器分别部署时候,由于应用服务器时间与数据库时钟不同步导致的问题(这在交易系统中尤为重要),在编程时候应当尽量采用数据库时间戳而不要使用应用服务器的时间戳,另外为了避免直接使用特定数据库时间函数而导致的与数据库类型绑定,在后期数据库切换时候带来的修改成本,尽量充分利用Hibernate来完成对数据库时间戳的获取,做到对数据库类型及函数的隔离。在Hibernate中有如下几种方案可以采用:
1、 利用Hibernate本身提供的current_date,current_timestamp,current_time函数
由于Hibernate在HSQL中必须有对象,因此使用这些函数时候必须依托某个vo对象。例如有一个VO对象BssProduct。
select current_timestamp() from BssProduct
2、 利用Hibernate的formula表达式来做影射
例如在BssProduct.hbm.xml中通过formula 的表达式来影射字段
<property name=”mydate” type=”java.utl.date” formula=”( select now() from bss_product bs ) ” />
注意:使用formula时候sql语句中的table名称及字段名称一定要是数据库中的表名称,而不能用表影射的java类。
然后在BssProduct.java VO中增加mydate的get,set方法
private Date mydate; public Date getMydate() { return mydate; } public void setMydate(Date mydate) { this.mydate = mydate; }
然后在HSQL中就可以把mydate作为普通的字段使用
select product.mydate from BssProduct product
这样在切换数据库时候只需要修改配置文件即可,而不用修改代码。
当然与此类似,可以通过NamedSQLQuery的方式来配置sql,调用数据库函数,然后迁移数据库时候也只需要修改对应的sql,而不用修改代码。
3、通过数据库对视图的支持,然后Hibernate来做影射,通过视图来隔离数据库函数的不同。
但此种方式对于不支持视图的数据库无效(5.0以前的Mysql不支持视图)
CREATE VIEW my_timestamp AS SELECT CURRENT_TIMESTAMP AS my_timestamp
一般情况采用current_timestamp等缺省函数,特殊情况采用formula方案,有空可以仔细研究一下formula的用法,实际上可以完成很多功能。
发表评论
-
大型互联网服务集成平台:springmvc+mybatis+restfull+JMS+webservice+bootstrap
2015-04-12 23:36 22SpringMVC + Mybatis + SpringS ... -
Spring中二级缓存的配置
2011-12-18 20:40 22401.首先,在spring的hibernate配置里(app ... -
Hibernate 配置文件提示
2011-12-11 16:03 10361.这个则是hibernate.cfg.xml文件的头信息.. ... -
Hibernate中二级缓存的配置
2011-10-18 00:26 1262我们知道 hibernate的session提供了一级缓存, ... -
Hibernate 生成策略属性
2011-10-17 14:01 1017"assigned" 主键由外部程序负责生 ... -
Exception in thread "main" java.lang.NoClassDefFoundError: javax/transaction/Syn
2011-10-16 18:37 2473Exception in thread "main& ... -
Hibernate缓存的分类
2011-10-16 11:25 1036Hibernate缓存分类: Session ... -
Hibernate关联映射-one to one主键双向关联
2011-09-23 01:11 1321这次,继续上一次的实例。 记录1对1 主键双向关联. ... -
Exception in thread "main" org.hibernate.id.IdentifierGenerationException: attem
2011-09-23 00:46 2071今天在做Hibernate中1多1双向关联映射的实例时, ... -
Hibernate关联映射-one to one 外键双向关联.
2011-09-22 00:28 1173说明:双向一对一,是一对多的特例,只需要在多的一方设置成 ... -
Hibernate关联映射-many to many 外键单向关联.
2011-09-20 01:18 1458多对多的实例很多,这里说一个比较简单的例子,而且还是单向 ... -
Hibernate关联映射-many to one 外键单向关联
2011-09-18 00:25 1964多个人可以对应一个地址,也就是所谓的多对一关系,many to ... -
Hibernate关联映射-one to to 主键单向关联
2011-09-17 23:23 1052这次介绍 还是以Person 和 Address 为例. ... -
Hibernate关联映射-one to many外键单向关联
2011-09-15 01:14 4593以下是说明,1对多 单向外键关联 的实例.同样以person ... -
Hibernate关联映射-one to one单向外键关联
2011-09-13 22:00 1656Hibernate的关联关系很多,也非常的复杂. 常见的有 ... -
org.hibernate.TransientObjectException: object references an unsaved transient i
2011-09-12 19:02 1490org.hibernate.TransientObjectEx ... -
org.hibernate.PropertyAccessException: Exception occurred inside getter of pack.
2011-09-12 18:54 6130报如下,异常是因为,在Person对象中.设置的属性类型 ... -
org.hibernate.MappingException: could not instantiate id generator
2011-09-10 14:32 2484在搭建Hibernate的环境时, ... -
配置hibernate.properties 或 hibernate.cfg.xml 文件时,在配置JDBC连接参数时,要配置数据库方言
2011-09-10 13:04 1936各数据库的方言 (配置 hibernate.cfg.xml 时 ... -
java.sql.SQLException: ORA-01747: user.table.column, table.column 或列说明无效
2011-08-17 11:53 7196今天,使用Hibernate框架,做映射时,添加数据时, ...
相关推荐
3. **日期时间函数**:如`current_date()`, `current_time()`, `current_timestamp()`,获取当前日期、时间或日期时间,还有`date()`, `time()`, `timestamp()`等用于提取日期、时间部分。 4. **转换函数**:`cast...
5. **Query 改进**:HQL 和 Criteria 查询支持更多的函数和操作符,如日期、时间函数、集合操作等,使得查询表达力更加强大。 6. **性能优化**:3.6 版本对缓存机制进行了优化,支持更高效的二级缓存策略,同时优化...
7. 动态字段获取:在某些情况下,可能需要动态获取数据库中的所有表或特定表的所有字段,这通常涉及到遍历数据库的元数据,获取表名列表后再分别查询每个表的字段信息。 8. 数据库安全:在获取字段信息时,应确保...
`default`属性被设置为`sysdate()`,这是一个SQL函数,用于获取当前系统日期和时间。因此,在插入或更新记录时,如果该字段没有被显式设置,那么它的值将自动设置为当前的系统日期和时间。 #### 控制字段是否参与...
Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者在Java对象和数据库记录之间建立映射,从而简化数据库编程。Hibernate API是这个框架的核心,提供了多种接口和类,帮助开发者实现数据的持久化操作...
在处理数据库中的日期时间数据时,选择合适的方法至关重要。对于JDBC而言,推荐的做法是将数据库中的`Date`类型字段对应的实体类属性设置为`String`类型,以便于操作和日期查询。此外,使用精确的时间格式存储和查询...
在Java开发中,Hibernate是一个非常流行的ORM(Object-Relational Mapping)框架,它简化了与关系数据库的交互。当使用Hibernate连接Microsoft SQL Server数据库时,需要特定的驱动支持。标题提到的"hibernate连接...
1. **增加字段**:在DB2数据库中增加字段通常使用`ALTER TABLE`命令。例如,向`T_KLT_MOBILIZATION`表中增加三个字段`WORK_ADDRESS1CODE`、`WORK_ADDRESS1`和`WORK_ADDRESS2`,其SQL语句如下: ``` ALTER TABLE T_...
在自定义函数中,我们可以利用Groovy的面向对象特性,定义类和方法来处理明细表和主表的数据交互。 2. **数据访问**:Groovy可以方便地与数据库进行交互,通过JDBC API或者ORM框架(如Hibernate)来查询明细表和主...
在Hibernate中,这个库提供的函数可以用于字符串处理、日期时间操作等。 这些jar包的组合使得Hibernate能够有效地处理数据库操作,包括对象的创建、检索、更新和删除,同时也支持高级特性,如级联操作、缓存管理、...
时间日期函数** - **Current_Date, Current_Time, Current_Timestamp**: 获取当前日期、时间戳。 - **示例**: `SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, t.id FROM Topic t` **6. 分组与统计函数...
HQL支持多种内置函数,例如日期函数: ```hql SELECT s, YEAR(s.birthDate) AS birthYear FROM Student s; ``` 这里`YEAR()`函数用来提取出生日期中的年份。 ##### between and 和 not between and 确定查询范围 ...
在Java中,处理日期和时间主要涉及`java.util.Date`, `java.sql.Date`, `java.time`包中的类。在Java 8之后,推荐使用`java.time`包中的API,如`LocalDate`, `LocalTime`, `LocalDateTime`等。 1. **创建日期和时间...
14.5.1 在数据库中对集合排序 14.5.2 在内存中对集合排序 14.6 映射组件类型集合 14.7 小结 14.8 思考题 第15章 映射实体关联关系 15.1 映射一对一关联 15.1.1 按照外键映射 15.1.2 按照主键映射 ...
5. **MINUTE(d)**、**HOUR(d)**、**DAY(d)**、**MONTH(d)**、**YEAR(d)**:这些函数分别用于从日期时间表达式中提取分钟、小时、天、月和年份。例如,如果`d`是`'2023-04-12 10:32:45'`,则`MINUTE(d)`将返回`32`,`...
- 查询操作:使用Query或CriteriaQuery构建查询语句,通过执行查询获取结果集,支持分页、排序、聚合函数等功能。 总结,Hibernate 5.1.13.Final版本以其强大的功能和优秀的性能,成为了Java开发者处理数据库操作的...
索引是对数据库中一对多个列值的排序,帮助数据库高效获取数据的数据结构。索引分为普通索引、唯一索引、主键索引、全文索引。优点包括加快检索速度、唯一索引确保每行数据的唯一性、在使用索引的过程可以优化隐藏器...
在`where`子句中,可以使用各种表达式,包括数学运算符、比较运算符、逻辑运算符、函数(如日期和时间函数)等。 3. **查询执行与结果处理** 调用`list()`方法执行查询,结果会加载到内存中的集合。返回的对象...
Java 学习笔记总结 本资源是 Java 开发者的学习笔记,涵盖了项目管理、权限管理、自动编号、...在 Java 中,可以使用 Java 的日期和时间 API 来实现日期计算。计算两个日期相差的天数可以提高日期处理的效率和可读性。
14.5.1 在数据库中对集合排序 14.5.2 在内存中对集合排序 14.6 映射组件类型集合 14.7 小结 14.8 思考题 第15章 映射实体关联关系 15.1 映射一对一关联 15.1.1 按照外键映射 15.1.2 按照主键映射 ...