hibernate笔记(一)


一、主配置文件hibernate.cfg.xml

位置:放在src目录下。

主要包含信息:

一、数据库信息    数据库方言(类的全名) 及 数据库链接信息

1.      数据库方言

2.      数据库连接字符串

3.      数据库驱动类名

4.      数据库名

5.      数据库密码

二、其他配置

比如:

1.	<property name="show_sql">true</property><!-- 是否显示 sql语句-->
2.	<property name="format_sql">false</property><!--是否格式化显示sql语句-->
3.	<property name="hbm2ddl.auto">update</property><!--创建表的方式-->
  	<!--
			create:在创建前,先删除表
			create-drop:启动时创建 程序结束时 删除表在测试不保留数据时 使用
			update:一般在项目中使用
			validate:带有验证功能
		 -->

 

 

三、导入映像配置文件

<mappingresource="com/xiaohui/hibernate/User.hbm.xml"/>

也可以不用配,在配置文件对象 Configuration 加载主配置文件后通过addClass(Obj.class)方法自动的加载同一目录下的类名.hbm.xml映像配置文件。

示例代码

<session-factory>
		<!-- 一、数据库信息    数据库方言(类的全名) 及 数据库链接信息 -->
		<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
		<property name="connection.url">jdbc:mysql:///hibernate</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.username">root</property>
		<property name="connection.password">root</property>
		<!-- 二、 其他 配置 -->
		<property name="show_sql">true</property><!-- 是否显示 sql语句-->
		<property name="format_sql">false</property>
		<!--
			create:在创建前,先删除表
			create-drop:启动时创建 程序结束时 删除表在测试不保留数据时 使用
			update:一般在项目中使用
			validate:带有验证功能
		 -->
		<property name="hbm2ddl.auto">update</property>
		<!--三、 导入配置文件 
		<mapping resource="com/xiaohui/hibernate/User.hbm.xml"/>
		-->
	</session-factory>

二、映像配置文件 类名.hbm.xml

位置:和对用的类在同一目录下。

信息包含  需要映射的类的全名,以及映射到数据库的表名。类的属性名,表的字段名(不设置默认和类的属性名 一致。当属性名为数据库的关键字时,需要用 ` 反单引号括起来)字段名 包含普通字段(如:int,Integer,String,Date,boolean,byte[]),以及自定义对象。

如:

 

<hibernate-mapping package="org.hibernate.test.extendshbm">
	<class name="com.xiaohi.c_hbm_property.Person" table="person">
		<id name="id" type="int" column="id">
			<generator class="increment"/>
		</id>
		<!-- 			类属性名		类型小写			对应的表列名 -->
		<property name="name" type="string" not-null="true" length="30"/>
		<property name="birthday" not-null="true" type="date" />
		<property name="gender" not-null="true" type="boolean"/>
		<property name="desc" not-null="true" type="text" column="`desc`"  length="5000"/>
		<property name="photo" not-null="true" type="binary" length="51200"/>
	</class>
</hibernate-mapping>

一般主键的配置:

<id name="id">
			<!-- identity,使用数据库的自动增长,在保存时会忽略手工指定的主键值而由数据库生成 
				要求此属性要是数字类型
            <generator class="identity"/>
			-->
            <!-- assigned,手工指定,比如指定UUID 
            <generator class="assigned"/>
            -->
            <!-- uuid,由Hibernate生成UUID并指定为主键值,要求此属性要是String型 
            <generator class="uuid"/>
            -->
            <!-- hilo,高低位算法生成主键,需要用到一个额外的表,所有的数据库都可以使用这种类型 
            <generator class="hilo">
                <param name="table">hi_value</param>
                <param name="column">next_value</param>
                <param name="max_lo">100</param>
       		</generator>
            -->
            <!-- native,根据底层数据库的能力选择 identity、sequence 或者 hilo 中的一个 -->
            <generator class="native"/>
		</id>

 

组合主键的配置:

<!-- 映射联合主键的配置 -->
		<composite-id>
			<key-property name="firstName" type="string" />
			<key-property name="lastName" type="string" />
		</composite-id>


当使用组合主键时,javaBean对象需要实现java.io.Serializable接口。并且在获取对象时,使用session.get(obj.class,obj)方法中obj需要设置联合主键的每一个值(单列主键的 一般直接传id值)

public void getTest(){
		Session session = sessionFactory.openSession();
		session.beginTransaction();
		Person p = new Person();
		p.setFirstName("古");
		p.setLastName("天乐");
		Person user = (Person) session.get(Person.class, p);
		System.out.println(user.getFirstName()+":"+user.getLastName()+":"+user.getGender());
		session.getTransaction().commit();
		session.close();
	}


组成关系的映射配置:

<class name="com.xiaohui.hibernate.User" table="user">
		<id name="id">
			<generator class="native"/>
		</id>
		<property name="name" type="string"/>
		<!-- 组成关系映射 -->
		<component name="address" class="com.xiaohui.e_component.Address">
			<property name="address"/>
			<property name="tel"/>
			<property name="zipCode"/>
		
		</component>
	</class>

生成的表为5个字段 。

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值