hibernate.cfg.xml文件中怎么引入properties文件

 我来答
百度网友5e15b90
2017-11-02 · TA获得超过1031个赞
知道小有建树答主
回答量:806
采纳率:91%
帮助的人:839万
展开全部

在实际开发中一般都是hibernate.properties和hibernate.cfg.xml结合使用。一般在属性文件hibernate.properties中存放数据库连接相关的操作数据,在hibernate.cfg.xml文件中存放映射配置,在Users.hbm.xml(.hbm.xml之前的Users时自定义的,可以一个实体类对应一个.hbm.xml文件,也可以多个实体类对应一个.hbm.xml文件)。

之前是将属性和映射配置都存放在hibernate.cfg.xml,如下:

[java] view plain copy

  • <span style="font-family:SimSun;font-size:18px;"><!DOCTYPE hibernate-configuration PUBLIC  

  • "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  

  • "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">  

  • <hibernate-configuration>  

  • <session-factory>  

  • <!-- 配置数据库访问信息 -->  

  • <property name="dialect">  

  • org.hibernate.dialect.MySQLDialect  

  • </property>  

  • <property name="connection.driver_class">  

  • com.mysql.jdbc.Driver  

  • </property>  

  • <property name="connection.url">  

  • jdbc:mysql://localhost:3306/two  

  • </property>  

  • <property name="connection.username">  

  • root  

  • </property>  

  • <property name="connection.password">  

  • root  

  • </property>  

  • <!-- 在控制台显示sql语句 -->  

  • <property name="show_sql">true</property>  

  • <!-- 自动生成或更新数据库表 -->  

  • <property name="hbm2ddl.auto">update</property>  

  • <!-- 注册映射文件 -->  

  • <mapping resource="com/study/po/Users.hbm.xml" />  

  • </session-factory>  

  • </hibernate-configuration></span>  

  • 上面这种方式来定义属性和映射配置是可以,但是现在开发是将属性定义和映射配置分开,这样可以使得结果更加清晰,需要修改属性就去hibernate.properties文件修改,需要修改映射配置就在hibernate.cfg.xml中去修改。
  • 比如:

    1.在hibernate.properties中配置连接数据库需要的属性:

    [java] view plain copy

  • <span style="font-family:SimSun;font-size:18px;">hibernate.dialect=org.hibernate.dialect.MySQLDialect//定义方言(定义优化的sql语句)  

  • hibernate.connection.driver_class=com.mysql.jdbc.Driver  

  • hibernate.connection.url=jdbc:mysql://localhost:3306/firstdb?characterEncoding=utf8  

  • hibernate.connection.username=root  

  • hibernate.connection.password=root  

  • hibernate.show_sql=true//表示是否输出操作数据库的语句  

  • hibernate.format_sql=true//表示是个格式化输出sql语句  

  • hibernate.hbm2ddl.auto=update//表示是否根据映射文件自动创建数据库表</span>  

  • 注:hibernate.hbm2ddl.auto的值为create表示每次运行都会新建表;值为create-drop是在关闭SessionFactory时删除仙剑表;值为update(常用值)时表示如果第一运行时数据库没有对应表,那么会新建表,但是如果存在对应数据表,就不再创建对应的数据表。
  • 2.在hibernate.cfg.xml中进行映射配置(注册映射文件):

    [java] view plain copy

  • <span style="font-family:SimSun;font-size:18px;"><!DOCTYPE hibernate-configuration PUBLIC  

  • "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  

  • "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">  

  • <hibernate-configuration>  

  • <session-factory>  

  • <!-- 注册映射文件 -->  

  • <mapping resource="com/study/po/Users.hbm.xml"/>  

  • </session-factory>  

  • </hibernate-configuration></span>  

  • 3.在Users.hbm.xml中配置持久化(实体,pojo)类和数据库表的映射:
  • [java] view plain copy

  • <span style="font-family:SimSun;font-size:18px;"><?xml version="1.0"?>  

  • <!DOCTYPE hibernate-mapping PUBLIC   

  • "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  

  • "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">  

  • <hibernate-mapping package="com.study.po">  

  • <class name="com.study.po.Users" table="users">  

  • <!-- 主键 -->  

  • <id name="id" column="id">  

  • <!-- 主键生成方式:自动生成 -->  

  • <generator class="native"/>  

  • </id>  

  • <property name="username" column="usernames" type="java.lang.String" not-null="true"/>  

  • <property name="password" column="passwords" type="java.lang.String" not-null="true"/>  

  • </class>  

  • </hibernate-mapping></span>  

  • 上面是Users.hbm.xml中具体数据,配置内容可以依照如下格式:
  • [java] view plain copy

  • <span style="font-family:SimSun;font-size:18px;"><hibernate-mapping 属性=”值”>  

  • <class name="类名" table="表名">  

  • <!-- 主键 -->  

  • <id name="主键属性名" column="表主键列名">  

  • <!-- 主键生成方式 -->  

  • <generator class="生成方式"/>  

  • </id>  

  • <property name="属性" column="列名" type="数据类型" not-null="true"/>  

  • <property name="password" column="passwords" type="java.lang.Integer" not-null="true"/>  

  • </class>  

  • </hibernate-mapping></span>  

  • 主键:在Hibernate中持久化类都会有一个标识属性,用于标识实例的唯一,该属性映射到数据库表的主键。

  • 主键生成器:<generator class="生成方式"/>
  • 生成方式的值有:

    increment:表示获取数据库中表最大主键值,并+1后作为新的主键。

    identity:自动增长,主要使用在mysql,db2。

    native:(开发中一般选择此方式)自动增长,Hibernate会根据数据库从identity,sequence(序列),hilo(高低算法)中选择一种合适的方式生成主键,在mysql中时使用identity,在Oracle中时选择sequence(序列)。

    uuid:使用UUID算法生成字符串类型主键(主要用于分布式部署)。

    数据表各字段配置:<property name="属性" column="列名" type="数据类型" not-null="true"/>,实体类的属性与数据库表中列名(字段名)对应,在给定数据类型时最好写上此数据类型对应的包名(写上全名)。






本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式