很多人在java项目开发的时候,在处理数据库时都会用到数据库映射工具--Hibernate,而对Hibernate的配置文件(.hbm文件)都有所接触,但能够适当配置hbm需要相当的积累。或许Hiberntae还存在很多Bug吧,呵呵,还有待改进。
在java的PoJo类与数据库进行映射的时候,有时候数值型数据,如Int,Float,Double等在insert或者Update操作的时候会遇到Null值的情况,这时候会产生Exception信息:
null value was assigned to a property of primitive type setter of
不知道这种情况怎么解决,最笨的办法就是在数据库里写触发器,但是这个太麻烦
不知道能不能在Hibernate的配置文件中设置默认值,上网google了一下,查到以下内容:
Hibernate允许我们在映射文件里控制insert和update语句的内容.比如在映射文件中<property 元素中的update属性设置成为false,那么这个字段,将不被包括在基本的update语句中,修改的时候,将不包括这个字段了.insert同理.dynamic动态SQL语句的配置也是很常用的.下面介绍配置SQL语句的具体属性:
1)<property>元素 insert属性:设置为false,在insert语句中不包含这个字段,表示永远不会被插入,默认true
2)<property>元素 update属性:设置为false,在update语句中不包含这个字段,表示永远不会被修改,默认true
3)<class>元素 mutable属性:设置为false就是把所有的<property>元素的update属性设置为了false,说明这个对象不会被更新,默认true
4)<property>元素 dynamic-insert属性:设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中.默认false
5)<property>元素 dynamic-update属性,设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false
6)<class>元素 dynamic-insert属性:设置为true,表示把所有的<property>元素的dynamic-insert属性设置为true,默认false
7)<class>元素 dynamic-update属性:设置为true,表示把所有的<property>元素的dynamic-update属性设置为true,默认false
Hibernate生成动态SQL语句的消耗的系统资源(比如CPU,内存等)是很小的,所以不会影响到系统的性能,如果表中包含N多字段,建议把dynamic-update属性和insert属性设置为true,这样在插入和修改数据的时候,语句中只包括要插入或者修改的字段.可以节省SQL语句的执行时间,提高程序的运行效率.
但是我在Property属性中设置了dynamic-insert和dynamic-update,启动tomcat服务器发现编译出错,于是将这段话(dynamic-insert="true" dynamic-update="true")放在了class中(注:这两种配置是不一样的,写在Property属性中表示是对这个字段起作用,而放在class是表示对类的所有字段起作用),配置代码如下:
...
<class name="view" tablename="view" dynamic-insert="true" dynamic-update="true" />
<property name="filed" type="java.lang.Double">
<column name="filed" sql-type="number(1);default 0" >
</column>
</property>
...
而且还要将Pojo的类型改为对应的类包装类型(java.lang.Interger ,java.lang.Double等,或者省略为Interger和Double)
注意,修改了java代码之后,必须得restart tomcat服务,否则运行还是上次的代码
待代码修改完毕之后,启动tomcat,终于正常了。
不过似乎存在一点问题,不管你的sql-type="number(1);default 0"怎么设置默认值,它都是0,希望知道的高手指教一下,呵呵...
分享到:
相关推荐
通过阅读博客链接(https://jackyin5918.iteye.com/blog/1925082),可以深入学习更多关于Hibernate映射文件的实践和技巧。同时,TestHibernate文件可能是相关的测试代码,通过实际操作可以加深对这些概念的理解。
在SSH中,映射文件配置是管理不同系统间文件传输、资源共享的关键环节。本笔记将详细介绍SSH映射文件配置的三个核心部分:基础配置参数使用、多对一映射以及一对多映射。 **基础配置参数使用** SSH的基础配置通常...
#### Hibernate映射文件与配置关系 Hibernate映射是ORM(对象关系映射)框架中的一项关键技术,它允许开发者在数据库表和Java对象之间建立映射关系,从而简化了数据访问层的开发工作。映射文件通常是`.hbm.xml`格式...
- 映射文件引用:通过`<mapping resource=""/>`标签,指定Hibernate映射文件的位置,这些文件定义了对象与数据库表之间的映射关系。 - 会话工厂配置:`<session-factory>`元素是配置的主要部分,其中包含了许多可...
访问这个链接可以获取更详细的信息,比如作者可能深入讨论了Hibernate映射的各个方面,包括XML配置、注解方式的映射,以及在实际项目中的应用案例。 **标签解析:**“源码”和“工具” “源码”标签表明文章可能会...
以下是一个简单的Hibernate映射文件示例: ```xml <hibernate-mapping> 员工信息 <column name="EMPLOYEE_ID" precision="15" scale="0" sql-type="BIGINT" check="EMPLOYEE_ID > 0"/> </...
通过以上步骤,我们不仅能够快速地在MyEclipse中创建Hibernate项目,还能自动生成实体类及其映射配置文件,大大提高了开发效率。这对于需要频繁与数据库交互的应用程序来说,无疑是一种非常有用的技巧。
1. **映射文件**:在Hibernate的XML映射文件(.hbm.xml)中,bag集合的配置可能会如下所示: ```xml ``` 这里,`propertyName`是Java对象中的集合属性名,`inverse="true"`表示子表的维护由父表负责,`...
5. **配置Hibernate映射文件**:虽然在JPA中可以直接使用注解进行配置,但在一些情况下,你可能还需要为每个实体创建对应的Hibernate XML映射文件,以进一步自定义映射细节。 6. **数据操作**:在实际应用中,你...
在Hibernate中,通常使用XML格式的映射文件来定义实体类与数据库表之间的映射关系。这些映射文件通常包含以下关键元素: - `<class>`:用于指定实体类与数据库表之间的映射关系。 - `<id>`:表示主键字段。 - `...
该文件定义了数据库连接的细节、事务管理策略、缓存策略等全局配置,以及Hibernate映射文件的加载路径,是Hibernate启动时读取的第一份配置文件。 ##### 文件结构解析 以示例代码为例: ```xml <!DOCTYPE ...
总结,《Hibernate原理与配置快速入门》教程涵盖了Hibernate的基础知识和实践技巧,对于想要快速入门的开发者来说,是一份非常宝贵的资源。通过学习,读者不仅可以了解ORM的基本概念,还能掌握在实际项目中使用...
2. 编写实体类和映射文件:定义Java类并配置映射关系。 3. 编写配置文件:配置数据库连接和其他参数。 4. 编写测试类:使用SessionFactory创建Session,进行CRUD操作。 通过以上步骤,你可以了解Hibernate的基本...
Hibernate 是一款开源的对象关系映射(Object Relational Mapping, ORM)框架,用于 Java 应用程序与关系型数据库之间的交互。它允许开发者以面向对象的方式进行数据库操作,极大地简化了数据访问层的编码工作。通过...
- **概念**:映射文件(如XML映射文件)是一种配置文件,它包含了用于定义SQL语句以及结果集与Java对象之间映射关系的元素。 - **作用**: - 定义SQL语句,提高代码可读性和可维护性。 - 将查询结果映射为Java对象...
1. **对象关系映射**: Hibernate通过XML配置文件或注解来定义对象与数据库表之间的映射关系,使得我们可以直接操作对象,而无需编写SQL语句。 2. **Session接口**: Hibernate的核心接口是Session,它提供了与数据库...
- **介绍**: XDoclet是一种为Java项目生成各种辅助文件(如Hibernate映射文件)的工具。 - **工作原理**: 通过在Java代码中添加特定的Javadoc标签,XDoclet能够分析这些代码并生成相应的映射文件。 - **优点**: 提高...
本教程将通过一系列视频深入探讨Hibernate的配置过程,旨在帮助开发者快速掌握其核心配置和使用技巧。 Hibernate的核心在于将Java类与数据库表进行映射,使得我们可以在Java代码中直接操作对象,而无需关心底层SQL...
例如,在`hibernate.cfg.xml`中,`session-factory`元素可能包含了一个`mapping`子元素,用于引用实体类的映射文件,其`resource`属性值就是映射文件的路径。在IDE(集成开发环境)如IntelliJ IDEA或Eclipse中,如果...