Hibernate.cfg.xml注解和*.hbm.xml配置文件

Hibernate.cfg.xml配置文件,是hibernate的主要配置文件,里面包含了,数据库连接信息配置,数据库方言配置,sql语句打印配置,sql语句格式化配置,数据库更新方式配置,加载实体类配置文件等等,

hibernate的另一个很重要的配置文件就是实体类对应的配置文件*.hbm.xml配置文件,里面配置了实体类和数据库表对应的信息,包含实体类的类名、主键生成方式、属性、类型以及数据库的表名、列名、主键自增方式等等......


下面我把几个常用的配置,以及注解展示出来,方便大家查看:

写了一个cfg的项目,名称是hibernate_cfg

架构如下:



hibernate.cfg中的pojo和test包下的代码,可以参见《Hibernate环境搭建和配置


其中hibernate.cfg.xml配置文件中,常见的配置如下:

<!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="connection.driver_class">
			com.mysql.jdbc.Driver
		</property>
		<property name="connection.url">jdbc:mysql:///hibernate4</property>
		<property name="connection.username">root</property>
		<property name="connection.password">root</property>
		<!-- 数据库方言 -->
		<property name="hibernate.dialect">
			org.hibernate.dialect.MySQL5Dialect
		</property>
		<!-- 是否打印sql语句 -->
		<property name="show_sql">true</property>
		<!-- 格式化sql语句 -->
		<property name="format_sql">true</property>
		<!-- 数据库更新方式: 
		 1、create:每次更新都先把原有数据库表删除,然后创建该表;
		 2、create-drop:使用create-drop时,在显示关闭SessionFacroty时(sessionFactory.close()),将drop掉数据库Schema(表) 
		 3、validate:检测;
		 4、update(常用):如果表不存在则创建,如果存在就不创建
		 -->
		<property name="hbm2ddl.auto">update</property>

		<!-- 加载User实体类对应的配置文件 -->
		<mapping resource="com/robert/pojo/User.hbm.xml" />

	</session-factory>
</hibernate-configuration>



实体类User代码如下:

package com.robert.pojo;

public class User {

	private int id ;
	private String name ;
	private String pwd ;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	
	
}



和实体类User对应的User.hbm.xml配置文件的内容和详解如下:

<?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">

<!-- This mapping demonstrates content-based discrimination for the table-per-hierarchy 
	mapping strategy, using a formula discriminator. -->

<!-- package:声明pojo类所在的包,如果不写,那么在class中的name里需要指明pojo类所在的包;
     schema:指数据库的模式,一个模式下可以有多张表。
 -->
<hibernate-mapping package="com.robert.pojo">

	<!-- class:指映射一个pojo类,
	         1)提供了公共的无参构造方法,通过反射产生对象。
	         2)属性用private修饰,并且生成对应的set/get方法。
	         3)类不能用final来修饰,hibernate会产生代理类(通过cglib)。
	     name:表示pojo类名;
	     table:表示pojo类对应的数据库中的表名;如果不写,默认是类名。
	 -->
	<class name="User" table="user">
        <!-- 
        	id:表示实体类的标识(OID),对应数据库表的主键;
        	name:指实体类的标识属性名;
        	column:表示对应数据库表的列名,如果不写,则和属性名一致;
        	length:表示数据库表中对应数据类型的长度,如果不写,有默认长度;
        	type:表示类型,如果不写,hibernate会找对应pojo类的属性类型;
         -->
		<id name="id" column="id">
			<!-- 主键生成策略
				 increment:用于为long,short或者int类型生成唯一标识,
				                            只有在没有其他进程往同一张表中插入数据时才能使用。在集群下不要使用。
				                            (可以使用的数据库是:mysql,ms sql)。
				 identity:对DB2,MySQL,MS SQL Server,Sybase和HypersonicSQL的内置标识字段提供,
				                          返回的标识符是long, short, 或者int类型的。
				 sequence:在支持序列的数据库中使用,使用数据库是oracle。 
				                           例子:
				          <generator class="sequence" >
				                                         注释:param中的值是数据库sequence的名称 
				                <param name="sequence">user_seq</param>
			              </generator>
				 uuid:	UUID被编码为一个32位的16进制数字的字符串;
				 native:根据底层的数据库能力选择,identity,sequence或者hilo中的一个;
				 assigned:自己指定主键。
			 -->
			<generator class="native" />
		</id>
		
		<!-- 
			实体类的属性
			name:指明pojo类属性名称(区分大小写);
			column:实体类属性对应的数据库表列名;
		 -->
		<property name="name" >
			<column name="name"></column>
		</property>
		<property name="pwd" />

	</class>

</hibernate-mapping>









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hibernate 中,可以通过 hibernate.cfg.xmlhibernate.properties 文件来配置 Hibernate 的相关属性。如果您使用的是 hibernate.cfg.xml 文件进行配置,可以在文件中添加以下配置来支持存储 byte[] 类型数据: ```xml <hibernate-configuration> <session-factory> <!-- 其他配置 --> <mapping class="com.example.MyEntity"/> <mapping resource="com/example/MyEntity.hbm.xml"/> </session-factory> </hibernate-configuration> ``` 以上配置中,mapping 节点用于指定需要映射的实体类。如果您的实体类是通过注解方式进行配置的,可以使用 class 属性来指定类名;如果您的实体类是通过 XML 配置文件进行配置的,则可以使用 resource 属性来指定 XML 文件路径。 然后,在对应的实体类对应的 XML 配置文件 (比如 MyEntity.hbm.xml) 中,需要将 byte[] 类型的属性映射为 BLOB 或 CLOB 字段,示例代码如下: ```xml <hibernate-mapping> <class name="com.example.MyEntity" table="my_entity"> <id name="id" type="long"> <column name="id" /> <generator class="identity" /> </id> <property name="data" column="data" /> </class> </hibernate-mapping> ``` 在上面的配置中,property 节点用于将 data 属性映射为数据库表中的 data 字段。由于 data 属性是 byte[] 类型的,Hibernate 会根据 @Lob 注解自动将其映射为 BLOB 或 CLOB 字段。请注意,如果您的实体类是通过注解方式进行配置的,可以省略 XML 配置文件中的相应配置

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值