ssh做demo,关于hibernate映射文件部分,发现了同事的一个很好的方法,学习下。
以数据库中T_user表为例,用hibernate连接数据库自动生成映射文件,产生User.hbm.xml文件,该文件内容如下:
这样的.java文件的代码很简单,也就是字段的定义以及get/set方法,这里就不引入了。与其对应的applicationContext.xml文件里对于映射文件的写法是:
<value>com/lxt/vo/User.hbm.xml</value>
与之相对应的可以自己写映射文件,这样就可以不产生.hbm.xml 文件,这样会使得程序包更清晰,映射文件的代码如下:
这样对应的applicationContext.xml文件里对于映射文件的写法是:
<value>com.lxt.vo.User</value>
效果是一样的,这种写法相对来说可能使得项目包看起来不是很冗余,尤其是当项目很大时,vo里的文件就会成倍的增长,不过刚开始使用这个写法时倒是遇到一个很值得阐述的一个问题,针对.java代码中的“@Table(name="T_user") //数据库中表的名字”这句话,我的数据库是SQL Server2000,系统可以正常运行,插入数据后居然在我的数据库LXT的T_user表中找不到我插入的数据,但是系统运行明明显示了数据,这样使得我很郁闷的不停的刷新再刷新,这里要强调的是“@Table(name="T_user") 这句话有自动生成table表的功能,既然这样,把数据库中的表删除,系统运行,数据库中没有该表,但系统确实看到数据库中的数据了,后来在我的其他库中惊奇的发现了这张表,这样问题的原因突然就明朗了,对,默认数据库的原因,“@Table(name="T_user") 这句话是对SQL Server2000默认数据库进行操作的。所以将数据库的默认数据库修改成你所需要的就可以了。